Swift 陣列
Swift 陣列使用有序列表儲存同一型別的多個值。相同的值可以多次出現在一個數組的不同位置中。
Swift 陣列會強制檢測元素的型別,如果型別不同則會報錯,Swift 陣列應該遵循像Array<Element>這樣的形式,其中Element是這個陣列中唯一允許存在的資料型別。
如果建立一個數組,並賦值給一個變數,則建立的集合就是可以修改的。這意味著在建立陣列後,可以通過新增、刪除、修改的方式改變數組裡的專案。如果將一個數組賦值給常量,陣列就不可更改,並且陣列的大小和內容都不可以修改。
建立陣列
我們可以使用構造語法來建立一個由特定資料型別構成的空陣列:
var someArray = [SomeType]()
以下是建立一個初始化大小陣列的語法:
var someArray = [SomeType](repeating: InitialValue, count: NumbeOfElements)
以下例項建立了一個型別為 Int ,數量為 3,初始值為 0 的空陣列:
var someInts = [Int](repeating: 0, count: 3)
以下例項建立了含有三個元素的陣列:
var someInts:[Int] = [10, 20, 30]
訪問陣列
我們可以根據陣列的索引來訪問陣列的元素,語法如下:
var someVar = someArray[index]
index 索引從 0 開始,即索引 0 對應第一個元素,索引 1 對應第二個元素,以此類推。
我們可以通過以下例項來學習如何建立,初始化,訪問陣列:
import Cocoa var someInts = [Int](repeating: 10, count: 3) var someVar = someInts[0] print( "第一個元素的值 \(someVar)" ) print( "第二個元素的值 \(someInts[1])" ) print( "第三個元素的值 \(someInts[2])" )
以上程式執行輸出結果為:
第一個元素的值 10 第二個元素的值 10 第三個元素的值 10
修改陣列
你可以使用 append() 方法或者賦值運算子 += 在陣列末尾新增元素,如下所示,我們初始化一個數組,並向其新增元素:
import Cocoa var someInts = [Int]() someInts.append(20) someInts.append(30) someInts += [40] var someVar = someInts[0] print( "第一個元素的值 \(someVar)" ) print( "第二個元素的值 \(someInts[1])" ) print( "第三個元素的值 \(someInts[2])" )
以上程式執行輸出結果為:
第一個元素的值 20 第二個元素的值 30 第三個元素的值 40
我們也可以通過索引修改陣列元素的值:
import Cocoa var someInts = [Int]() someInts.append(20) someInts.append(30) someInts += [40] // 修改最後一個元素 someInts[2] = 50 var someVar = someInts[0] print( "第一個元素的值 \(someVar)" ) print( "第二個元素的值 \(someInts[1])" ) print( "第三個元素的值 \(someInts[2])" )
以上程式執行輸出結果為:
第一個元素的值 20 第二個元素的值 30 第三個元素的值 50
遍歷陣列
我們可以使用for-in迴圈來遍歷所有陣列中的資料項:
import Cocoa var someStrs = [String]() someStrs.append("Apple") someStrs.append("Amazon") someStrs.append("itread01") someStrs += ["Google"] for item in someStrs { print(item) }
以上程式執行輸出結果為:
Apple Amazon itread01 Google
如果我們同時需要每個資料項的值和索引值,可以使用 String 的 enumerate() 方法來進行陣列遍歷。例項如下:
import Cocoa var someStrs = [String]() someStrs.append("Apple") someStrs.append("Amazon") someStrs.append("itread01") someStrs += ["Google"] for (index, item) in someStrs.enumerated() { print("在 index = \(index) 位置上的值為 \(item)") }
以上程式執行輸出結果為:
在 index = 0 位置上的值為 Apple 在 index = 1 位置上的值為 Amazon 在 index = 2 位置上的值為 itread01 在 index = 3 位置上的值為 Google
合併陣列
我們可以使用加法操作符(+)來合併兩種已存在的相同型別陣列。新陣列的資料型別會從兩個陣列的資料型別中推斷出來:
import Cocoa var intsA = [Int](repeating: 2, count:2) var intsB = [Int](repeating: 1, count:3) var intsC = intsA + intsB for item in intsC { print(item) }
以上程式執行輸出結果為:
2 2 1 1 1
count 屬性
我們可以使用 count 屬性來計算陣列元素個數:
import Cocoa var intsA = [Int](count:2, repeatedValue: 2) var intsB = [Int](count:3, repeatedValue: 1) var intsC = intsA + intsB print("intsA 元素個數為 \(intsA.count)") print("intsB 元素個數為 \(intsB.count)") print("intsC 元素個數為 \(intsC.count)")
以上程式執行輸出結果為:
intsA 元素個數為 2 intsB 元素個數為 3 intsC 元素個數為 5
isEmpty 屬性
我們可以通過只讀屬性 isEmpty 來判斷陣列是否為空,返回布林值:
import Cocoa 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