數(shù)組是由一組類型相同的元素構(gòu)成的有序數(shù)據(jù)集合。數(shù)組中的集合元素是有
序的伶唯,而且可以重復出現(xiàn)惧盹。
1數(shù)組創(chuàng)建
在Swift語言中,數(shù)組的類型格式為:
Array或[ElementType]
其中Array中的ElementType表示數(shù)組的類型粹断,是泛型寫法。[ElementType]是一種簡寫方式瓶埋。兩者表示的功能是一樣的,我們更偏向于使用簡寫形式,本書里所有數(shù)組類型都是使用簡寫形式养筒。
下面我們來創(chuàng)建一個String類型的數(shù)組
1 | ?var strArray1: Array
2 | ?let strArray2: [String]
在聲明一個數(shù)組的時候可以使用let和var進行修飾曾撤,其中l(wèi)et表示不可變數(shù)組,var表示可變數(shù)組晕粪。
第1行代碼聲明了一個類型為Array的可變數(shù)組strArray1挤悉。是泛型,說明在這個數(shù)組中只能存放字符串類型的數(shù)據(jù)。
第2行代碼聲明了一個類型為[String]的不可變數(shù)組strArray2巫湘。[String]也是聲明一個只能存放字符串類型的數(shù)組装悲。
接下來我們來學習如何創(chuàng)建一個空數(shù)組。
1 | ?var emptyStrs= [String]()
2 | ?let emptyInts = [Int]()
創(chuàng)建一個數(shù)組需要對數(shù)組進行聲明和初始化尚氛。上述第1行代碼我們創(chuàng)建了一個String類型可變空數(shù)組emptyStrs诀诊。其中我們var聲明表示該數(shù)組是可變數(shù)組,中括號[]里面的值String表示數(shù)組的類型属瓣。[String]()是對數(shù)組進行初始化,只不過沒有任何元素。
第2行代碼與第1行代碼同樣是創(chuàng)建一個空數(shù)組emptyInts奈懒,區(qū)別在于我們用let聲明了一個不可變數(shù)組奠涌,該數(shù)組的類型是Int類型。let聲明的數(shù)組是不可變數(shù)組,必須在聲明的同時進行初始化,一旦初始化,就不可以被修改磷杏。
最后我們來學習如何創(chuàng)建非空數(shù)組溜畅。示例代碼如下:
1| ?var strArray1: Array = ["hello","swift"]
2| ?var strArray2: [String] = ?["hello","swift"]
3| ?let strArray3 = ["hello","swift",15]
上述代碼都是對數(shù)組進行聲明和初始化,數(shù)組的類型是通過冒號(:)指明數(shù)組的類型。數(shù)組中的元素由一對中括號([])括起來极祸,數(shù)組中的元素之間用逗號分隔慈格。
第1行代碼是使用標準模板方式聲明是一個String類型的可變數(shù)組strArray1,并初始化值為["hello","swift"]遥金。其中尖括號表示數(shù)組的類型,表示strArray1只能存放String類型的元素浴捆。
第2行代碼是采用簡寫形式顯式聲明可變數(shù)組strArray2。[String]表示數(shù)組的類型稿械,表示strArray2只能存放String類型的元素选泻。
第3行代碼聲明了一個不可變數(shù)組,這里沒有指明數(shù)組的類型美莫,采用的是隱式推斷页眯。根據(jù)初始化數(shù)組的值推斷出數(shù)組的類型。在strArray3數(shù)組中我們存放了String類型的"hello","swift"以及Int類型的15厢呵。在沒有明確指定數(shù)組類型窝撵,我們可以在數(shù)組中存放不同類型的元素。
不可變數(shù)組在訪問效率上比可變數(shù)組要高,可變數(shù)組通過犧牲訪問效率換取可變襟铭。當我們可以確定數(shù)組是不需要修改的,我們應該將它聲明為let碌奉。如果數(shù)組內(nèi)容需要改變短曾。我們需要將它聲明為var。
此外赐劣,如果數(shù)組中存儲多個相同的元素嫉拐,我們可以通過以下方法快速創(chuàng)建該數(shù)組:
1| ?var threeDoubles = Array(repeating: 0.0, count: 3)
此時threeDoubles數(shù)組的內(nèi)容為[0.0,0.0,0.0]