Swift - Mảng

Mảng Swift 4 được sử dụng để lưu trữ danh sách có thứ tự các giá trị cùng kiểu. Swift 4 thực hiện việc kiểm tra nghiêm ngặt để không cho phép bạn nhập sai kiểu trong một mảng, thậm chí do nhầm lẫn.

Nếu bạn gán một mảng đã tạo cho một biến, thì nó luôn có thể thay đổi được, có nghĩa là bạn có thể thay đổi nó bằng cách thêm, bớt hoặc thay đổi các mục của nó; nhưng nếu bạn gán một mảng cho một hằng số, thì mảng đó là bất biến và không thể thay đổi kích thước và nội dung của nó.

Tạo Mảng

Bạn có thể tạo một mảng trống của một loại nhất định bằng cách sử dụng cú pháp trình khởi tạo sau:

var someArray = [SomeType]()

Đây là cú pháp để tạo một mảng có kích thước cho trước a * và khởi tạo nó với giá trị -

var someArray = [SomeType](count: NumbeOfElements, repeatedValue: InitialValue)

Bạn có thể sử dụng câu lệnh sau để tạo một mảng trống Int loại có 3 phần tử và giá trị ban đầu là 0 -

var someInts = [Int](count: 3, repeatedValue: 0)

Sau đây là một ví dụ khác để tạo một mảng ba phần tử và gán ba giá trị cho mảng đó:

var someInts:[Int] = [10, 20, 30]

Truy cập Mảng

Bạn có thể lấy một giá trị từ một mảng bằng cách sử dụng subscript cú pháp, chuyển chỉ mục của giá trị bạn muốn lấy trong dấu ngoặc vuông ngay sau tên của mảng như sau:

var someVar = someArray[index]

Đây, indexbắt đầu từ 0 có nghĩa là phần tử đầu tiên có thể được truy cập bằng chỉ mục là 0, phần tử thứ hai có thể được truy cập bằng chỉ mục là 1, v.v. Ví dụ sau đây cho thấy cách tạo, khởi tạo và truy cập các mảng:

var someInts = [Int](count: 3, repeatedValue: 10)

var someVar = someInts[0]
print( "Value of first element is \(someVar)" )
print( "Value of second element is \(someInts[1])" )
print( "Value of third element is \(someInts[2])" )

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

Value of first element is 10
Value of second element is 10
Value of third element is 10

Sửa đổi mảng

Bạn có thể dùng append()phương thức hoặc toán tử gán phép cộng (+ =) để thêm một mục mới vào cuối mảng. Hãy xem ví dụ sau. Ở đây, ban đầu, chúng tôi tạo một mảng trống và sau đó thêm các phần tử mới vào cùng một mảng -

var someInts = [Int]()

someInts.append(20)
someInts.append(30)
someInts += [40]

var someVar = someInts[0]

print( "Value of first element is \(someVar)" )
print( "Value of second element is \(someInts[1])" )
print( "Value of third element is \(someInts[2])" )

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

Value of first element is 20
Value of second element is 30
Value of third element is 40

Bạn có thể sửa đổi một phần tử hiện có của Mảng bằng cách gán một giá trị mới tại một chỉ mục nhất định như thể hiện trong ví dụ sau:

var someInts = [Int]()

someInts.append(20)
someInts.append(30)
someInts += [40]

// Modify last element
someInts[2] = 50

var someVar = someInts[0]

print( "Value of first element is \(someVar)" )
print( "Value of second element is \(someInts[1])" )
print( "Value of third element is \(someInts[2])" )

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

Value of first element is 20
Value of second element is 30
Value of third element is 50

Lặp lại trên một mảng

Bạn có thể dùng for-in vòng lặp để lặp qua toàn bộ tập giá trị trong một mảng như được hiển thị trong ví dụ sau:

var someStrs = [String]()

someStrs.append("Apple")
someStrs.append("Amazon")
someStrs += ["Google"]
for item in someStrs {
   print(item)
}

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

Apple
Amazon
Google

Bạn có thể dùng enumerate() hàm trả về chỉ mục của một mục cùng với giá trị của nó như được hiển thị bên dưới trong ví dụ sau:

var someStrs = [String]()

someStrs.append("Apple")
someStrs.append("Amazon")
someStrs += ["Google"]

for (index, item) in someStrs.enumerated() {
   print("Value at index = \(index) is \(item)")
}

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

Value at index = 0 is Apple
Value at index = 1 is Amazon
Value at index = 2 is Google

Thêm hai mảng

Bạn có thể sử dụng toán tử cộng (+) để thêm hai mảng cùng kiểu sẽ tạo ra một mảng mới với sự kết hợp các giá trị từ hai mảng như sau:

var intsA = [Int](count:2, repeatedValue: 2)
var intsB = [Int](count:3, repeatedValue: 1)

var intsC = intsA + intsB
for item in intsC {
   print(item)
}

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

2
2
1
1
1

Thuộc tính đếm

Bạn có thể sử dụng chế độ chỉ đọc count thuộc tính của một mảng để tìm ra số lượng các mục trong một mảng được hiển thị bên dưới:

var intsA = [Int](count:2, repeatedValue: 2)
var intsB = [Int](count:3, repeatedValue: 1)

var intsC = intsA + intsB

print("Total items in intsA = \(intsA.count)")
print("Total items in intsB = \(intsB.count)")
print("Total items in intsC = \(intsC.count)")

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

Total items in intsA = 2
Total items in intsB = 3
Total items in intsC = 5

Thuộc tính trống

Bạn có thể sử dụng chế độ chỉ đọc empty thuộc tính của một mảng để tìm xem một mảng có trống hay không như hình dưới đây:

var intsA = [Int](count:2, repeatedValue: 2)
var intsB = [Int](count:3, repeatedValue: 1)
var intsC = [Int]()

print("intsA.isEmpty = \(intsA.isEmpty)")
print("intsB.isEmpty = \(intsB.isEmpty)")
print("intsC.isEmpty = \(intsC.isEmpty)")

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

intsA.isEmpty = false
intsB.isEmpty = false
intsC.isEmpty = true