Mảng Swift: Cách sử dụng và tại sao? (Có ví dụ)

Trong hướng dẫn này, bạn sẽ tìm hiểu về mảng, cách tạo nó, truy cập các giá trị của một mảng và một số thao tác phổ biến trong mảng.

Trong bài viết Các kiểu dữ liệu Swift trước, chúng ta đã tìm hiểu về cách tạo biến / hằng của một số Kiểu dữ liệu có thể chứa một giá trị duy nhất.

Nhưng, điều gì sẽ xảy ra nếu chúng ta muốn lưu trữ nhiều giá trị của cùng một kiểu dữ liệu. Chúng tôi sử dụng một thứ gọi là Array trong Swift.

Mảng là gì?

Mảng chỉ đơn giản là một vùng chứa có thể chứa nhiều dữ liệu (giá trị) của một kiểu dữ liệu trong một danh sách có thứ tự, tức là bạn lấy các phần tử theo thứ tự giống như bạn đã xác định các mục trong mảng.

Một mảng có thể lưu trữ các giá trị của bất kỳ kiểu dữ liệu nào Int, ví dụ String, lớp, v.v.

Làm thế nào để khai báo một mảng trong Swift?

Bạn có thể tạo một mảng trống bằng cách chỉ định kiểu dữ liệu bên trong dấu ngoặc vuông ().

Hãy nhớ rằng, bạn phải bao gồm kiểu bên trong dấu ngoặc vuông, nếu không Swift sẽ coi nó như một kiểu dữ liệu bình thường và bạn chỉ có thể lưu trữ một giá trị duy nhất trong đó.

Ví dụ 1: Khai báo một mảng trống

 let emptyIntArr:(Int) = () print(emptyIntArr) 

Khi bạn chạy chương trình, đầu ra sẽ là:

 ()

Trong chương trình trên, chúng ta đã khai báo một hằng voidIntArr có thể lưu mảng các số nguyên và được khởi tạo bằng 0 giá trị.

HOẶC LÀ

Bạn cũng có thể xác định một mảng trống như sau:

 let emptyIntArr:Array = Array() print(emptyIntArr) 

HOẶC LÀ

Vì swift là một ngôn ngữ suy luận kiểu, bạn cũng có thể tạo mảng trực tiếp mà không cần chỉ định Kiểu dữ liệu nhưng phải khởi tạo với một số giá trị để trình biên dịch có thể suy ra kiểu của nó là:

Ví dụ 2: Khai báo một mảng với một số giá trị

 let someIntArr = (1, 2, 3, 4, 5, 6, 7, 8, 9) print(someIntArr) 

Khi bạn chạy chương trình, đầu ra sẽ là:

 (1, 2, 3, 4, 5, 6, 7, 8, 9)

Trong chương trình trên, chúng ta đã khai báo một hằng someIntArr có thể lưu trữ mảng Integer mà không cần chỉ định kiểu rõ ràng. Ngoài ra, chúng tôi đã khởi tạo mảng với các giá trị 1, 2, 3, 4, 5, 6, 7, 8, 9 .

Ví dụ 3: Khai báo một mảng chứa một số được chỉ định của một giá trị lặp lại duy nhất

Bạn cũng có thể lặp lại một giá trị một số lần nhất định để tạo thành một mảng trong Swift. Điều này được thực hiện bằng cách sử dụng bộ khởi tạo mảng có lặp và đếm.

 let arrWithRepeatingValues = Array(repeating: "Hello, World", count: 4) print(arrWithRepeatingValues) 

Khi bạn chạy chương trình, đầu ra sẽ là:

 ("Hello, World", "Hello, World", "Hello, World", "Hello, World")

Trong chương trình trên, chúng ta đã định nghĩa một hằng số arrWithRepeatingValues ​​lưu trữ một mảng chuỗi Hello, World và lặp lại cùng một giá trị trong 4 lần như đã chỉ định trong số đếm.

Lưu ý: Trong Swift, bạn không thể tạo mảng có kích thước chiều dài cố định như khi làm trong các ngôn ngữ lập trình khác. Mảng có kích thước độ dài cố định có nghĩa là, mảng không thể có nhiều phần tử hơn bạn xác định trong quá trình khởi tạo.

Các giá trị được lưu trữ trong mảng như thế nào?

Giả sử bạn có một hằng số có thể lưu trữ mảng chuỗi như bên dưới:

 hãy để intArr = (21, 34, 54, 12)

Biểu diễn bằng hình ảnh về cách các giá trị được lưu trữ trong mảng có thể được hiển thị bên dưới:

Tất cả các mảng bạn tạo bắt đầu bằng chỉ số 0. Phần tử đầu tiên được lưu trữ trong chỉ mục 0, phần tử thứ hai trong chỉ mục tiếp theo (1), v.v.

Làm thế nào để truy cập các phần tử mảng trong Swift?

Bạn có thể truy cập các phần tử của mảng bằng cách sử dụng cú pháp chỉ số con, tức là Bạn cần bao gồm chỉ mục của giá trị bạn muốn truy cập trong dấu ngoặc vuông ngay sau tên của mảng.

Giả sử bạn đã khai báo một mảng intArr như trên. Phần tử đầu tiên là intArr (0), phần tử thứ hai là intArr (1), v.v.

Ví dụ 4: Truy cập các phần tử của một mảng

 let intArr = (21, 34, 54, 12) print(intArr(0)) print(intArr(1)) print(intArr(2)) print(intArr(3)) 

Khi bạn chạy chương trình, đầu ra sẽ là:

 21 34 54 12 

Bạn cũng có thể truy cập các phần tử của một mảng bằng cách sử dụng vòng lặp for-in. Xem vòng lặp Swift For-in để tìm hiểu thêm về nó.

Làm cách nào để sửa đổi / thêm các phần tử mảng trong Swift?

Bạn có thể sửa đổi các phần tử của mảng bằng cách sử dụng cú pháp chỉ số con và toán tử gán, tức là bạn cần bao gồm chỉ mục của giá trị bạn muốn cập nhật trong dấu ngoặc vuông sau tên của mảng, theo sau là toán tử gán và giá trị mới.

Ví dụ 5: Sửa đổi các phần tử của một mảng

 var intArr = (21, 34, 54, 12) intArr(0) = 12 intArr(1) = 42 intArr(2) = 45 intArr(3) = 21 print(intArr) 

Khi bạn chạy chương trình, đầu ra sẽ là:

 (12, 42, 45, 21)

Bạn cũng có thể sửa đổi tất cả các phần tử của mảng với các giá trị mới như sau:

Ví dụ 6: Sửa đổi tổng thể một mảng

 var intArr = (21, 34, 54, 12) intArr = (1,2,3) print(intArr) 

Khi bạn chạy chương trình, đầu ra sẽ là:

 (1, 2, 3)

Tuy nhiên, để thêm một phần tử mới vào một mảng hiện có, bạn không thể sử dụng cú pháp chỉ số con. Nếu bạn làm vậy, bạn sẽ gặp lỗi. Bạn không thể làm điều gì đó như thế này:

Ví dụ 7: Thêm một phần tử mới vào một mảng bằng cú pháp chỉ số con (Không hoạt động)

 var intArr = (21, 34, 54, 12) intArr(4) = 10 

Khi bạn chạy chương trình, đầu ra sẽ là:

 lỗi nghiêm trọng: Chỉ mục nằm ngoài phạm vi

Chương trình trên đưa ra một lỗi khi gán một phần tử mới cho một mảng intArr. Điều này là do intArr đã không cấp phát thêm bộ nhớ cho chỉ mục 4 và không thể lưu trữ giá trị đã cho.

Để chèn chính xác một phần tử mới vào một mảng, chúng ta sử dụng append()phương thức của mảng . append()được mô tả trong phần dưới đây.

Một số chức năng & thuộc tính hữu ích được tích hợp trong Mảng

1. isEmpty

Thuộc tính này xác định xem một mảng có trống hay không. Nó trả về truenếu một mảng không chứa bất kỳ giá trị nào khác sẽ trả về false.

Ví dụ 8: How isEmpty hoạt động?

 let intArr = (21, 34, 54, 12) print(intArr.isEmpty) 

Khi bạn chạy chương trình, đầu ra sẽ là:

 sai

2. đầu tiên

Thuộc tính này được sử dụng để truy cập phần tử đầu tiên của một mảng.

Ví dụ 9: Làm thế nào đầu tiên hoạt động?

 let intArr = (21, 34, 54, 12) print(intArr.first) 

Khi bạn chạy chương trình, đầu ra sẽ là:

 Tùy chọn (21)

Tương tự, bạn có thể sử dụng thuộc lasttính để truy cập phần tử cuối cùng của một mảng.

3. nối

Hàm append được sử dụng để chèn / nối thêm phần tử vào cuối mảng.

Ví dụ 10: Cách hoạt động của append?

 var intArr = (21, 34, 54, 12) intArr.append(32) print(intArr) 

Khi bạn chạy chương trình, đầu ra sẽ là:

 (21, 34, 54, 12, 32)

Bạn cũng có thể nối nội dung của một mảng vào một mảng khác như sau:

 var firstArr = (1,2,3,4) var secondArr = (5,6,7,8) firstArr.append(contentsOf: secondArr) print(firstArr) 

Khi bạn chạy chương trình, đầu ra sẽ là:

 (1, 2, 3, 4, 5, 6, 7, 8)

4. chèn

Hàm này được sử dụng để chèn / nối phần tử tại chỉ mục cụ thể của mảng.

Ví dụ 11: Chèn hoạt động như thế nào?

 var intArr = (21,34,54,12) intArr.insert(22, at: 1) print(intArr) 

Khi bạn chạy chương trình, đầu ra sẽ là:

 (21, 22, 34, 54, 12)

Tương tự, bạn cũng có thể sử dụng thuộc removetính để loại bỏ phần tử tại chỉ mục được chỉ định.

5. loại bỏ

Hàm này loại bỏ và trả về giá trị được chỉ định tại vị trí được chỉ định khỏi mảng.

Ví dụ 12: Cách loại bỏ hoạt động?

 var strArr = ("ab","bc","cd","de") let removedVal = strArr.remove(at: 1) print("removed value is (removedVal)") print(strArr) 

Khi bạn chạy chương trình, đầu ra sẽ là:

 giá trị bị loại bỏ là bc ("ab", "cd", "de") 

Tương tự, bạn cũng có thể sử dụng các hàm như removeFirstloại bỏ phần tử đầu tiên của một mảng, removeLastđể loại bỏ phần tử cuối cùng của một mảng và removeAllđể làm trống một mảng.

6. đảo ngược

Hàm này trả về các phần tử của mảng theo thứ tự ngược lại.

Ví dụ 13: Đảo ngược () hoạt động như thế nào?

 var intArr = (21,22,23,24) let reversedArr = Array(intArr.reversed()) print(reversedArr) 

Khi bạn chạy chương trình, đầu ra sẽ là:

 (24, 23, 22, 21)

7. đếm

Thuộc tính này trả về tổng số phần tử trong một mảng.

Ví dụ 14: đếm

 let floatArr = (10.2,21.3,32.0,41.3) print(floatArr.count) 

Khi bạn chạy chương trình, đầu ra sẽ là:

 4

Những điều cần ghi nhớ

Trong khi sử dụng cú pháp chỉ số dưới để truy cập các phần tử của một mảng trong Swift, bạn phải chắc chắn rằng giá trị nằm trong chỉ mục, nếu không bạn sẽ gặp sự cố thời gian chạy. Hãy xem điều này trong ví dụ:

 let intArr = (21, 34, 54, 12) print(intArr(-1)) 

Khi bạn chạy chương trình, đầu ra sẽ là:

 lỗi nghiêm trọng: Chỉ mục nằm ngoài phạm vi

Trong chương trình trên, không có giá trị nào trong chỉ số -1 . Vì vậy, khi bạn cố gắng truy cập giá trị trong chỉ mục, bạn sẽ gặp phải lỗi thời gian chạy.

Để ngăn chặn điều này, trước tiên hãy tìm chỉ mục của phần tử bạn đang cố gắng loại bỏ. Và sau đó loại bỏ phần tử tại chỉ mục như dưới đây:

 var intArr = (21, 34, 54, 12) if let index = intArr.index(of: 34) ( print("found index") let val = intArr.remove(at: index) print(val) ) 

Khi bạn chạy chương trình, đầu ra sẽ là:

 tìm thấy chỉ số 34 

thú vị bài viết...