1术辐、數(shù)組Array
數(shù)組是存儲(chǔ)為單個(gè)值的值的集合砚尽。例如,John辉词,Paul必孤,George和Ringo是名字,但是數(shù)組使您可以將它們分組為一個(gè)名為The Beatles的單一值瑞躺。
let john = "John Lennon"
let paul = "Paul McCartney"
let george = "George Harrison"
let ringo = "Ringo Starr"
let beatles = [john, paul, george, ringo]
//let beatles:[String] = [john, paul, george, ringo]
您可以通過在方括號(hào)內(nèi)寫一個(gè)數(shù)字來從數(shù)組中讀取值敷搪。數(shù)組位置從0開始計(jì)數(shù)
beatles[1]
//:如果讀取不存在的項(xiàng)目输拇,Swift就會(huì)崩潰扔茅。例如僚纷,嘗試beatles[9]
2楼熄、集合Sets
集合特性:元素不重復(fù)、存儲(chǔ)無序闸与、元素類型均相同顽悼。
您可以直接從數(shù)組創(chuàng)建集,如下所示:
let colors = Set(["red", "green", "blue"])
如果您嘗試將重復(fù)項(xiàng)插入到集合中几迄,則重復(fù)項(xiàng)將被忽略
3蔚龙、元組Tuples
元組允許您將多個(gè)值存儲(chǔ)在一個(gè)值中。這聽起來像數(shù)組映胁,但是元組不同:
1木羹、您不能在元組中添加或刪除項(xiàng)目;它們的大小是固定的解孙。
2坑填、您無法更改元組中的項(xiàng)目類型;它們始終具有與創(chuàng)建時(shí)相同的類型弛姜。
3脐瑰、您可以使用數(shù)字位置或命名它們來訪問元組中的項(xiàng)目,但是Swift不允許您讀取不存在的數(shù)字或名稱廷臼。
var name = (first: "Taylor", last: "Swift")
//讀取
name.0
//name.first
創(chuàng)建元組后可以更改其值苍在,但不能更改值的類型。因此荠商,如果您嘗試將其更改name
為be (first: "Justin", age: 25)
寂恬,則會(huì)收到錯(cuò)誤消息。
4莱没、字典Dictionary
字典就像數(shù)組一樣是值的集合初肉,但是您不必使用整數(shù)位置存儲(chǔ)內(nèi)容,而是可以使用所需的任何內(nèi)容來訪問它們饰躲。
存儲(chǔ)字典數(shù)據(jù)的最常見方法是使用字符串
let heights = [
"Taylor Swift": 1.78,
"Ed Sheeran": 1.73
]
//讀取
heights["Taylor Swift"]
注意:使用類型注釋時(shí)牙咏,字典用括號(hào)括起來,在標(biāo)識(shí)符和值類型之間用冒號(hào)表示嘹裂。例如[String: Double]
和[String: String]
妄壶。
如果您嘗試使用不存在的鍵從字典中讀取一個(gè)值,Swift將會(huì)發(fā)回您nil
-完全沒有焦蘑。盡管這可能是您想要的盯拱,但還有另一種選擇:我們可以為字典提供一個(gè)默認(rèn)值,以供我們?cè)谛枰鄙冁I的情況下使用例嘱。
let favoriteIceCream = [
"Paul": "Chocolate",
"Sophie": "Vanilla"
]
favoriteIceCream["Paul"]
我們可以通過將字典的默認(rèn)值設(shè)置為“未知”來解決此問題狡逢,以便在找不到夏洛特冰淇淋時(shí),返回“Unknown”而不是nil:
favoriteIceCream["Charlotte", default: "Unknown"]
5拼卵、創(chuàng)建空集合
數(shù)組奢浑,集合和字典稱為集合,因?yàn)樗鼈儗⒅导性谝黄稹?/p>
如果要?jiǎng)?chuàng)建一個(gè)空集合腋腮,只需寫出它的類型雀彼,然后加上和關(guān)閉括號(hào)即可。例如即寡,我們可以創(chuàng)建一個(gè)空字典徊哑,其中包含用于鍵和值的字符串,如下所示
var teams = [String: String]()
teams["Paul"] = "Red"
//您可以創(chuàng)建一個(gè)空數(shù)組來存儲(chǔ)整數(shù)
var results = [Int]()
//創(chuàng)建一個(gè)空集聪富,這是通過不同的方式完成的
var words = Set<String>()
var numbers = Set<Int>()
Swift僅對(duì)字典和數(shù)組具有特殊的語法莺丑;其他類型必須使用尖括號(hào)語法(例如set)。
如果需要墩蔓,可以使用類似的語法創(chuàng)建數(shù)組和字典:
var scores = Dictionary<String, Int>()
var results = Array<Int>()
6梢莽、枚舉Enumerations
枚舉(通常稱為枚舉)是一種定義一組相關(guān)值的方式,使它們更易于使用奸披。
enum Result {
case success
case failure
}
let result4 = Result.failure
除了存儲(chǔ)簡(jiǎn)單值之外昏名,枚舉還可以存儲(chǔ)附加到每種情況的關(guān)聯(lián)值。這使您可以將附加信息附加到枚舉阵面,以便它們可以代表更多細(xì)微差別的數(shù)據(jù)
//enum Activity {
// case bored
// case running
// case talking
// case singing
//}
enum Activity {
case bored
case running(destination: String)
case talking(topic: String)
case singing(volume: Int)
}
//
let talking = Activity.talking(topic: "football")
有時(shí)您需要能夠?yàn)槊杜e賦值轻局,以便它們具有含義。這使您可以動(dòng)態(tài)創(chuàng)建它們样刷,并以不同方式使用它們嗽交。
enum Planet: Int {
case mercury
case venus
case earth
case mars
}
Swift會(huì)自動(dòng)為每個(gè)數(shù)字分配一個(gè)從0開始的數(shù)字,您可以使用該數(shù)字創(chuàng)建相應(yīng)枚舉大小寫的實(shí)例颂斜。例如夫壁,earth
將被賦予數(shù)字2,因此您可以這樣編寫:
let earth = Planet(rawValue: 2)
也可以改變從1開始
enum Planet: Int {
case mercury = 1
case venus
case earth
case mars
}