數(shù)組是由一組類型相同的元素構(gòu)成的有序數(shù)據(jù)集合。數(shù)組中的集合元素是有
序的,而且可以重復(fù)出現(xiàn)。
1數(shù)組創(chuàng)建
在Swift語言中,數(shù)組的類型格式為:
Array或[ElementType]
其中Array中的ElementType表示數(shù)組的類型,是泛型寫法。[ElementType]是一種簡(jiǎn)寫方式。兩者表示的功能是一樣的,我們更偏向于使用簡(jiǎn)寫形式,本書里所有數(shù)組類型都是使用簡(jiǎn)寫形式。
下面我們來創(chuàng)建一個(gè)String類型的數(shù)組
1 | ?var strArray1: Array
2 | ?let strArray2: [String]
在聲明一個(gè)數(shù)組的時(shí)候可以使用let和var進(jìn)行修飾,其中l(wèi)et表示不可變數(shù)組,var表示可變數(shù)組。
第1行代碼聲明了一個(gè)類型為Array的可變數(shù)組strArray1。是泛型,說明在這個(gè)數(shù)組中只能存放字符串類型的數(shù)據(jù)。
第2行代碼聲明了一個(gè)類型為[String]的不可變數(shù)組strArray2。[String]也是聲明一個(gè)只能存放字符串類型的數(shù)組。
接下來我們來學(xué)習(xí)如何創(chuàng)建一個(gè)空數(shù)組。
1 | ?var emptyStrs= [String]()
2 | ?let emptyInts = [Int]()
創(chuàng)建一個(gè)數(shù)組需要對(duì)數(shù)組進(jìn)行聲明和初始化。上述第1行代碼我們創(chuàng)建了一個(gè)String類型可變空數(shù)組emptyStrs。其中我們var聲明表示該數(shù)組是可變數(shù)組,中括號(hào)[]里面的值String表示數(shù)組的類型。[String]()是對(duì)數(shù)組進(jìn)行初始化,只不過沒有任何元素。
第2行代碼與第1行代碼同樣是創(chuàng)建一個(gè)空數(shù)組emptyInts,區(qū)別在于我們用let聲明了一個(gè)不可變數(shù)組,該數(shù)組的類型是Int類型。let聲明的數(shù)組是不可變數(shù)組,必須在聲明的同時(shí)進(jìn)行初始化,一旦初始化,就不可以被修改。
最后我們來學(xué)習(xí)如何創(chuàng)建非空數(shù)組。示例代碼如下:
1| ?var strArray1: Array = ["hello","swift"]
2| ?var strArray2: [String] = ?["hello","swift"]
3| ?let strArray3 = ["hello","swift",15]
上述代碼都是對(duì)數(shù)組進(jìn)行聲明和初始化,數(shù)組的類型是通過冒號(hào)(:)指明數(shù)組的類型。數(shù)組中的元素由一對(duì)中括號(hào)([])括起來,數(shù)組中的元素之間用逗號(hào)分隔。
第1行代碼是使用標(biāo)準(zhǔn)模板方式聲明是一個(gè)String類型的可變數(shù)組strArray1,并初始化值為["hello","swift"]。其中尖括號(hào)表示數(shù)組的類型,表示strArray1只能存放String類型的元素。
第2行代碼是采用簡(jiǎn)寫形式顯式聲明可變數(shù)組strArray2。[String]表示數(shù)組的類型,表示strArray2只能存放String類型的元素。
第3行代碼聲明了一個(gè)不可變數(shù)組,這里沒有指明數(shù)組的類型,采用的是隱式推斷。根據(jù)初始化數(shù)組的值推斷出數(shù)組的類型。在strArray3數(shù)組中我們存放了String類型的"hello","swift"以及Int類型的15。在沒有明確指定數(shù)組類型,我們可以在數(shù)組中存放不同類型的元素。
不可變數(shù)組在訪問效率上比可變數(shù)組要高,可變數(shù)組通過犧牲訪問效率換取可變。當(dāng)我們可以確定數(shù)組是不需要修改的,我們應(yīng)該將它聲明為let。如果數(shù)組內(nèi)容需要改變。我們需要將它聲明為var。
此外,如果數(shù)組中存儲(chǔ)多個(gè)相同的元素,我們可以通過以下方法快速創(chuàng)建該數(shù)組:
1| ?var threeDoubles = Array(repeating: 0.0, count: 3)
此時(shí)threeDoubles數(shù)組的內(nèi)容為[0.0,0.0,0.0]