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
屬性來查詢下面顯示的陣列中的專案數 -
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
屬性來查明陣列是否為空,如下所示 -
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