Swift3.0-元組蓝谨、數(shù)組灌具、字典

元組

元組(tuples)把多個(gè)值組合成一個(gè)復(fù)合值。元組內(nèi)的值可以是任意類型譬巫,并不要求是相同類型咖楣。

下面這個(gè)例子中,(404, "Not Found") 是一個(gè)描述 HTTP 狀態(tài)碼(HTTP status code)的元組缕题。HTTP 狀態(tài)碼是當(dāng)你請求網(wǎng)頁的時(shí)候 web 服務(wù)器返回的一個(gè)特殊值截歉。如果你請求的網(wǎng)頁不存在就會(huì)返回一個(gè) 404 Not Found 狀態(tài)碼胖腾。

let http404Error = (404, "Not Found")
// http404Error 的類型是 (Int, String)烟零,值是 (404, "Not Found")

(404, "Not Found") 元組把一個(gè) Int 值和一個(gè) String 值組合起來表示 HTTP 狀態(tài)碼的兩個(gè)部分:一個(gè)數(shù)字和一個(gè)人類可讀的描述。這個(gè)元組可以被描述為“一個(gè)類型為 (Int, String) 的元組”咸作。

你可以把任意順序的類型組合成一個(gè)元組锨阿,這個(gè)元組可以包含所有類型。只要你想记罚,你可以創(chuàng)建一個(gè)類型為 (Int, Int, Int) 或者 (String, Bool) 或者其他任何你想要的組合的元組墅诡。

你可以將一個(gè)元組的內(nèi)容分解(decompose)成單獨(dú)的常量和變量,然后你就可以正常使用它們了:

let (statusCode, statusMessage) = http404Error
print("The status code is \(statusCode)")
// 輸出 "The status code is 404"
print("The status message is \(statusMessage)")
// 輸出 "The status message is Not Found"

如果你只需要一部分元組值桐智,分解的時(shí)候可以把要忽略的部分用下劃線(_)標(biāo)記:

let (justTheStatusCode, _) = http404Error
print("The status code is \(justTheStatusCode)")
// 輸出 "The status code is 404"

此外末早,你還可以通過下標(biāo)來訪問元組中的單個(gè)元素,下標(biāo)從零開始:

print("The status code is \(http404Error.0)")
// 輸出 "The status code is 404"
print("The status message is \(http404Error.1)")
// 輸出 "The status message is Not Found"

你可以在定義元組的時(shí)候給單個(gè)元素命名:

let http200Status = (statusCode: 200, description: "OK")

給元組中的元素命名后说庭,你可以通過名字來獲取這些元素的值:

print("The status code is \(http200Status.statusCode)")
// 輸出 "The status code is 200"
print("The status message is \(http200Status.description)")
// 輸出 "The status message is OK"

作為函數(shù)返回值時(shí)然磷,元組非常有用。一個(gè)用來獲取網(wǎng)頁的函數(shù)可能會(huì)返回一個(gè) (Int, String) 元組來描述是否獲取成功刊驴。和只能返回一個(gè)類型的值比較起來姿搜,一個(gè)包含兩個(gè)不同類型值的元組可以讓函數(shù)的返回信息更有用。

數(shù)組

數(shù)組的簡單語法

寫 Swift 數(shù)組應(yīng)該遵循像Array這樣的形式捆憎,其中Element是這個(gè)數(shù)組中唯一允許存在的數(shù)據(jù)類型舅柜。我們也可以使用像[Element]這樣的簡單語法。盡管兩種形式在功能上是一樣的躲惰,但是推薦較短的那種致份,而且在本文中都會(huì)使用這種形式來使用數(shù)組。

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

我們可以使用構(gòu)造語法來創(chuàng)建一個(gè)由特定數(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)提供了類型信息雇锡,例如一個(gè)函數(shù)參數(shù)或者一個(gè)已經(jīng)定義好類型的常量或者變量逛钻,我們可以使用空數(shù)組語句創(chuàng)建一個(gè)空數(shù)組,它的寫法很簡單:[](一對空方括號(hào)):

someInts.append(3)
// someInts 現(xiàn)在包含一個(gè) Int 值
someInts = []
// someInts 現(xiàn)在是空數(shù)組锰提,但是仍然是 [Int] 類型的曙痘。
創(chuàng)建一個(gè)帶有默認(rèn)值的數(shù)組

Swift 中的Array類型還提供一個(gè)可以創(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](repeatElement(0.0, count: 3))
// threeDoubles 是一種 [Double] 數(shù)組立肘,等價(jià)于 [0.0, 0.0, 0.0]
通過兩個(gè)數(shù)組相加創(chuàng)建一個(gè)數(shù)組

我們可以使用加法操作符(+)來組合兩種已存在的相同類型數(shù)組边坤。新數(shù)組的數(shù)據(jù)類型會(huì)被從兩個(gè)數(shù)組的數(shù)據(jù)類型中推斷出來:

var anotherThreeDoubles = [Double](repeatElement(2.5, count: 3))
// anotherThreeDoubles 被推斷為 [Double],等價(jià)于 [2.5, 2.5, 2.5]

var sixDoubles = threeDoubles + anotherThreeDoubles
// sixDoubles 被推斷為 [Double]谅年,等價(jià)于 [0.0, 0.0, 0.0, 2.5, 2.5, 2.5]

利用下標(biāo)來一次改變一系列數(shù)據(jù)值茧痒,即使新數(shù)據(jù)和原有數(shù)據(jù)的數(shù)量是不一樣的。

var a = [1,2,3,4,5]
a[1...3] = [2]
print(a) // print: [1, 2, 5]

可以嵌套多對方括號(hào)來創(chuàng)建多維數(shù)組融蹂,最里面的方括號(hào)中指明數(shù)組元素的基本類型旺订。比如,下面例子中使用三對方括號(hào)創(chuàng)建三維整數(shù)數(shù)組:

var array3D: [[[Int]]] = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]

字典

字典類型快捷語法

Swift 的字典使用Dictionary定義超燃,其中Key是字典中鍵的數(shù)據(jù)類型区拳,Value是字典中對應(yīng)于這些鍵所存儲(chǔ)值的數(shù)據(jù)類型。

我們也可以用[Key: Value]這樣快捷的形式去創(chuàng)建一個(gè)字典類型意乓。

創(chuàng)建一個(gè)空字典

我們可以像數(shù)組一樣使用構(gòu)造語法創(chuàng)建一個(gè)擁有確定類型的空字典:

var namesOfIntegers = [Int: String]()
// namesOfIntegers 是一個(gè)空的 [Int: String] 字典

我們也可以在字典中使用下標(biāo)語法來添加新的數(shù)據(jù)項(xiàng)樱调。可以使用一個(gè)恰當(dāng)類型的鍵作為下標(biāo)索引届良,并且分配恰當(dāng)類型的新值:

var dic = ["a": 0, "b": 2, "c" : 3]
dic["d"] = 4
print(dic)  // print :["b": 2, "a": 0, "d": 4, "c": 3]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末笆凌,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子士葫,更是在濱河造成了極大的恐慌乞而,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件为障,死亡現(xiàn)場離奇詭異晦闰,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鳍怨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進(jìn)店門呻右,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鞋喇,你說我怎么就攤上這事声滥。” “怎么了?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵落塑,是天一觀的道長纽疟。 經(jīng)常有香客問我,道長憾赁,這世上最難降的妖魔是什么污朽? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮龙考,結(jié)果婚禮上蟆肆,老公的妹妹穿的比我還像新娘。我一直安慰自己晦款,他們只是感情好炎功,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著缓溅,像睡著了一般蛇损。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上坛怪,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天淤齐,我揣著相機(jī)與錄音,去河邊找鬼酝陈。 笑死床玻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的沉帮。 我是一名探鬼主播,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼贫堰,長吁一口氣:“原來是場噩夢啊……” “哼穆壕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起其屏,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤喇勋,失蹤者是張志新(化名)和其女友劉穎蔚约,沒想到半個(gè)月后毫缆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體字逗,經(jīng)...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡驼仪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年奔誓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嘹锁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膜赃。...
    茶點(diǎn)故事閱讀 40,918評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡诉稍,死狀恐怖妙真,靈堂內(nèi)的尸體忽然破棺而出缴允,到底是詐尸還是另有隱情,我是刑警寧澤珍德,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布练般,位于F島的核電站矗漾,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏薄料。R本人自食惡果不足惜敞贡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望摄职。 院中可真熱鬧嫡锌,春花似錦、人聲如沸琳钉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽歌懒。三九已至啦桌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間及皂,已是汗流浹背甫男。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留验烧,地道東北人板驳。 一個(gè)月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像碍拆,于是被迫代替她去往敵國和親若治。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,926評論 2 361

推薦閱讀更多精彩內(nèi)容