Swift數組
Swift 數組用於存儲相同類型的值的順序列表。Swift 要嚴格檢查,它不允許錯誤地在數組中存放了錯誤的類型。
如果賦值創建數組到一個變量,它總是可變的,這意味著可以通過添加元素來改變它, 刪除或更改其項目,但如果分配一個數組常量到則該數組,則數組是不可被改變的, 也就它的大小和內容不能被改變。
創建數組
可以使用下麵的初始化程序語法來創建某種類型的空數組:
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進行訪問,其它類似。讓我們來看看下麵創建,初始化和訪問數組的例子:
import Cocoa var someInts = [Int](count: 3, repeatedValue: 10) var someVar = someInts[0] println( "Value of first element is \(someVar)" ) println( "Value of second element is \(someInts[1])" ) println( "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() 方法或加法賦值運算符(+=)將新的項目添加到數組的末尾,在這裡首先創建一個空的數組,然後添加新的元素到數組中,如下圖所示:
import Cocoa var someInts = [Int]() someInts.append(20) someInts.append(30) someInts += [40] var someVar = someInts[0] println( "Value of first element is \(someVar)" ) println( "Value of second element is \(someInts[1])" ) println( "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
可以通過分配一個在給定的索引處新的值修改數組的現有元素,如在下麵的例子:
import Cocoa var someInts = [Int]() someInts.append(20) someInts.append(30) someInts += [40] // Modify last element someInts[2] = 50 var someVar = someInts[0] println( "Value of first element is \(someVar)" ) println( "Value of second element is \(someInts[1])" ) println( "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 循環迭代級數,在下麵的例子是數組的整個集值,如下圖所示:
import Cocoa var someStrs = [String]() someStrs.append("Apple") someStrs.append("Amazon") someStrs += ["Google"] for item in someStrs { println(item) }
當上述代碼被編譯和執行時,它產生了以下結果:
Apple Amazon Google
也可以使用 enumerate() 函數,如下麵的例子所示,它返回索引及對應的值:
import Cocoa var someStrs = [String]() someStrs.append("Apple") someStrs.append("Amazon") someStrs += ["Google"] for (index, item) in enumerate(someStrs) { println("Value at index = \(index) is \(item)") }
當上述代碼被編譯和執行時,它產生了以下結果:
Value at index = 0 is Apple Value at index = 1 is Amazon Value at index = 2 is Google
兩個數組相加
使用加法運算符(+),以添加的相同類型的數組,這將產生新的數組是來自兩個數組值相加組合後的數組,如下:
import Cocoa var intsA = [Int](count:2, repeatedValue: 2) var intsB = [Int](count:3, repeatedValue: 1) var intsC = intsA + intsB for item in intsC { println(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 println("Total items in intsA = \(intsA.count)") println("Total items in intsB = \(intsB.count)") println("Total items in intsC = \(intsC.count)")
當上述代碼被編譯和執行時,它產生了以下結果:
Total items in intsA = 2 Total items in intsB = 3 Total items in intsC = 5
空屬性
使用隻讀數組的空屬性(isEmpty)找出一個數組是否為空,如下圖所示:
import Cocoa var intsA = [Int](count:2, repeatedValue: 2) var intsB = [Int](count:3, repeatedValue: 1) var intsC = [Int]() println("intsA.isEmpty = \(intsA.isEmpty)") println("intsB.isEmpty = \(intsB.isEmpty)") println("intsC.isEmpty = \(intsC.isEmpty)")
當上述代碼被編譯和執行時,它產生了以下結果:
intsA.isEmpty = false intsB.isEmpty = false intsC.isEmpty = true