Swift陣列


Swift 4陣列用於儲存相同型別的有序值列表。 Swift 4進行了嚴格的檢查,不允許在陣列中輸入錯誤的型別。

如果將已建立的陣列分配給變數,則它總是可變的,這意味著可以通過新增,刪除或更改其項來更改它; 但是如果將陣列賦值給常數,那麼該陣列是不可變的,並且其大小和內容不能更改。

建立陣列

可以使用以下初始化語法建立某個型別的空陣列 -

var someArray = [SomeType]()

以下是建立給定大小的陣列並使用值初始化它的語法 -

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

可以使用以下語句建立一個具有3個元素且初始值為零的Int型別的空陣列 -

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

下面是另一個範例,用於建立三個元素的陣列並為該陣列分配三個值 -

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

存取陣列

使用下標語法從陣列中檢索值,並在陣列名稱後面的方括號內傳遞要檢索的值的索引,如下所示 -

var someVar = someArray[index]

這裡,索引從0開始,可以使用索引0存取第一個元素,可以使用索引1存取第二個元素,依此類推。 以下範例顯示如何建立,初始化和存取陣列 -

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])" )

編譯並執行上述程式碼時,會產生以下結果 -

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

修改陣列

可以使用append()方法或附加賦值運算子(+=)在陣列末尾新增新項。 看一下下面的例子。 在這裡,首先建立一個空陣列,然後將新元素新增到同一個陣列中 -

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])" )

編譯並執行上述程式碼時,會產生以下結果 -

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

可以通過在給定索引處分配新值來修改陣列的現有元素,如以下範例所示 -

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])" )

編譯並執行上述程式碼時,會產生以下結果 -

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

疊代陣列

使用for-in迴圈疊代陣列中的整個值集,如以下範例所示 -

var someStrs = [String]()

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

編譯並執行上述程式碼時,會產生以下結果 -

Apple
Amazon
Google

使用enumerate()函式返回專案的索引及其值,如下例所示 -

var someStrs = [String]()

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

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

編譯並執行上述程式碼時,會產生以下結果 -

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

新增兩個陣列

可以使用加法運算子(+)新增兩個相同型別的陣列,這將產生一個新陣列,其中包含來自兩個陣列的值的組合,如下所示 -

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

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

編譯並執行上述程式碼時,會產生以下結果 -

2
2
1
1
1

count屬性

使用陣列的唯讀count屬性來查詢下面顯示的陣列中的專案數 -

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)")

編譯並執行上述程式碼時,會產生以下結果 -

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

empty屬性

使用陣列的唯讀empty屬性來查明陣列是否為空,如下所示 -

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)")

編譯並執行上述程式碼時,會產生以下結果 -

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