DAY5:Collection Types

今天用到的Markdown語法

Blockquotes

Right angle brackets > are used for block quotes.


Swift語言提供了Arrays、Sets和Dictionaries三中基本的集合類型來存儲集合數(shù)據(jù)。Arrays(數(shù)組)飾有序的數(shù)據(jù)的集合,Sets(集合)飾無序無重復(fù)數(shù)據(jù)的集合,Dictionaries (字典)是無序的鍵值對的集合。

集合的可變性(Multability of Collections)

如果創(chuàng)建一個Arrays、Sets和Dictionaries并且把它分配成一個變量,這個集合是可變化的,就是說我們可以對集合內(nèi)的數(shù)據(jù)進(jìn)行操作,增刪改。如果我們把集合分配給一個常量,那么它就是不可變化的。

數(shù)組

數(shù)組使用有序列表存儲同一類型的的多個值,相同的值可以在數(shù)組中出現(xiàn)多次。

注意:Swift的Array類型被橋接到Foundation中的NSArray類,更多關(guān)于Foundation和Cocoa中使用Array的信息,參見 Using Swift with Cocoa and Obejective-C 一書

數(shù)組的簡單語法

寫swift數(shù)組應(yīng)該遵循像Array<Element>這樣的形式,其中Element飾這個數(shù)組中惟一允許存在的數(shù)據(jù)類型,我們也可以使用[Element]這樣簡單的語法,但是推薦是用簡單的那種。

創(chuàng)建一個數(shù)組

我們可以使用構(gòu)造語法來創(chuàng)建一個由特定的數(shù)據(jù)類型構(gòu)成的空數(shù)組:

var someInts = [Int]()
print("someInts is of type [Int] with \(someInts.count) items.")
//someInts is of type [Int] with 0 items."

我們通過構(gòu)造函數(shù),someInts的值被推斷成[Int]。
或者,如果在上下文中已經(jīng)提供了類型的信息,例如一個函數(shù)的參數(shù)或者一個已經(jīng)定義好類型的常量或者變量,我們可以使用空數(shù)組語句創(chuàng)建一個空得數(shù)組,它的寫法很簡單:

someInts.append(3)
// someInts 現(xiàn)在包含一個 Int 值
someInts = []
// someInts 現(xiàn)在是空數(shù)組,但是仍然是 [Int] 類型的。

創(chuàng)建一個帶有默認(rèn)值的數(shù)組

swift中Array類型還可以提供一個可以創(chuàng)建特定大小并且所有數(shù)據(jù)都被默認(rèn)的構(gòu)造方法。我們可以把準(zhǔn)備加入新數(shù)組的數(shù)據(jù)項(xiàng)數(shù)量(count)和適當(dāng)類型的初始值(repeatedValue)傳入數(shù)組構(gòu)造函數(shù):

var threeDoubles = [Double](count: 3, repeatedValue: 0.0)
//threeDoubles是一種[Double]數(shù)組,等價于[0.0,0.0,0.0]

通過兩個數(shù)組相加創(chuàng)建一個數(shù)組

用加號來組合兩個已經(jīng)存在的相同類型的數(shù)組:

var threeDoubles = Array(count: 3, repeatedValue: 0.0)
var anotherThreeDouble = Array(count: 3, repeatedValue: 2.5)
var sixDouble = threeDoubles + anotherThreeDouble
//sixDouble被推斷為[Double],等價于[0.0,0.0,0.0,2.5,2.5,2.5]

用字面量構(gòu)造數(shù)組

我們可以使用字面量來進(jìn)行數(shù)組構(gòu)造,這是一種用一個或者多個數(shù)值構(gòu)造數(shù)組的簡單方法。字面量是一系列由逗號分隔并且方括號內(nèi)包含數(shù)值:
[value1,value2,value3]
通過下面的例子創(chuàng)建一個叫shoppingList并且存儲String的數(shù)組:

var shoppingList: [String] = ["Eggs","Milk"]

初始化了一個包含String類型的數(shù)組,并且初始化。

訪問和修改數(shù)組

我們可以通過數(shù)組的方法和屬性來訪問和修改數(shù)組,或者使用下標(biāo)語法
可以使用數(shù)組的只讀屬性count來獲取數(shù)組中得數(shù)據(jù)項(xiàng)數(shù)量:

var shoppingList: [String] = ["Eggs","Milk"]
聲明一個包含String類型的數(shù)組,里面有兩個值["Eggs","Milk"]
print("The shopping list contains \(shoppingList.count) items.")
可以用只讀屬性count來獲取數(shù)組項(xiàng)目的數(shù)量
if shoppingList.isEmpty {
    print("The shoppingList is empty.")
} else {
    print("The shoppingList is not empty.")
}
可以用isEmpty屬性來檢查count屬性的值是否是0
shoppingList.append("Flour")
可以使用append方法在數(shù)組后面添加新的數(shù)據(jù)項(xiàng),或者用下面的+=的方法,也可以在數(shù)組后面直接添加一個或者多個有相同類型的數(shù)據(jù)項(xiàng)
shoppingList += ["Baking Powder"]
shoppingList += ["Chocolate Spread","Cheese","Butter"]
可以用索引值放在方括號中獲取所對應(yīng)的數(shù)據(jù)項(xiàng)目,注意索引值是從0開始的。
var firstItem = shoppingList[0]
可以直接對索引選出來得項(xiàng)目進(jìn)行賦值,本身有值就是對其進(jìn)行修改
shoppingList[0] = "Six eggs"
本來數(shù)組是這么多值,["Eggs", "Milk", "Flour", "Baking Powder", "Chocolate Spread", "Cheese", "Butter"],但是下面一行對索引是4到6的進(jìn)行了修改,不僅改變了所對應(yīng)的值,也改變了數(shù)組的大小,
變成了["Six eggs", "Milk", "Flour", "Baking Powder", "Bananas", "Apples"]
shoppingList[4...6] = ["Bananas","Apples"]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容