Swift新引入的類型

元組(Tuples):
定義:元組(tuples)把多個(gè)值組合成一個(gè)復(fù)合值兼都。元組內(nèi)的值可以是任意類型,并不要求是相同類型漂羊。

用途:可以把多個(gè)值組成一個(gè)復(fù)合值,作為函數(shù)的參數(shù)或返回值使用時(shí)侣背,非常方便白华。
用法:
    組合:
        let http404Error = (404, "Not Found")
        print(http404Error)
        // http404Error的類型是:(Int, String),值是(404, "Not Found")
    分解:
        let (statusCode, statusMessage) = http404Error
        print("statusCode = \(statusCode), statusMessage = \(statusMessage)")

其他:
    如果只需要一分部元組值,分解時(shí)可以把忽略的部分用下劃線(_)標(biāo)記:
        let (justTheStatusCode, _) = http404Error
        print("The status code is \(justTheStatusCode)")
        // 輸出 "The status code is 404"
    可以通過下標(biāo)來訪問元組中的單個(gè)元素贩耐,下標(biāo)從0開始:
        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"

可選類型(Optionals):
用途:用于處理值可能缺失的情況弧腥。
可選表示:有值,等于x 或 沒有值

nil :
    可以給可選變量賦值為nil來表示它沒有值:
        例:
            var serviceResponseCode: Int? = 404  // 打印結(jié)果是一個(gè)可選的Int值:404
            serverResponseCode = nil // 打印結(jié)果為nil,即不包含值
        注意:
            nil不能用于非可選的常量和變量潮太。如果代碼中由于常量或變量需要處理值缺失的情況管搪,請(qǐng)把它們聲明成對(duì)應(yīng)的可選類型

    如果聲明了一個(gè)可選常量或變量但是沒有賦值,它們會(huì)自動(dòng)被設(shè)置為nil:
        例:
            var surveyAnswer: String?  // 打印結(jié)果為nil, 即被自動(dòng)設(shè)置為nil
            var numberAnswer: Int?     // 打印結(jié)果同上
        注意:
            Swift和Objective-C的nil并不一樣铡买。
            在Objective-C中更鲁,nil指向一個(gè)不存在對(duì)象的指針。
            在Swift中奇钞,nil不是指針澡为,是一個(gè)確定的值,用來表示值確實(shí)(任何類型的可選狀態(tài)都可以被設(shè)置為nil),不只是對(duì)象

if語句以及強(qiáng)制解析
    可選值得強(qiáng)制解析:當(dāng)確定可選類型確實(shí)包含值之后景埃,在可選值的名字后面加一個(gè)感嘆號(hào)(!)                  
                   來獲取值媒至,這被稱為可選值得強(qiáng)制解析
        例:
            let possibleNumber = "123"
            let convertedNumber = Int(possibleNumber) 
            // convertedNumber 被推測(cè)為類型 "Int?", 或者類型 "optional Int"
            if convertedNumber != nil {
                print("convertedNumber contains some integer value of \(convertedNumber!).")
                 //不等于nil說明有值,強(qiáng)制解析
            }
        注意:使用!來獲取一個(gè)不存在的可選值會(huì)導(dǎo)致運(yùn)行時(shí)錯(cuò)誤纠亚。因此,在使用!強(qiáng)制解析值之前筋夏,一定要確定可選包含一個(gè)非nil得值

可選綁定
    if let actualNumber = Int(possibleNumber) {
        print("\'\(possibleNumber)\' has an integer value of \(actualNumber)")
    } else {
        print("\'\(possibleNumber)\' could not be converted to an integer")
    }
    理解:
        如果Int(possibleNumber)返回的可選Int包含一個(gè)值蒂胞,創(chuàng)建一個(gè)叫做actualNumber的心常量并將可選值賦給它
    用法:
        可以在可選綁定中使用常量或變量,如果想在第一分支中操作actualNumber,可改成變量
        if var actualNumber1 = Int(possibleNumber) {
            actualNumber1 = 100
            print("\'\(possibleNumber)\' has an integer value of \(actualNumber1)")
        } else {
            print("\'\(possibleNumber)\' could not be converted to an integer")
        }
        可以包含多個(gè)可選綁定在if語句中条篷,并使用where子句做布爾值判斷
        if let firstNumber = Int("4"), secondNumber = Int("42") where firstNumber < secondNumber {
            print("\(firstNumber) < \(secondNumber)")
        } // prints "4 < 42"

隱式解析可選類型
    用途:
        有時(shí)候在程序中骗随,第一次被賦值之后蛤织,可以確定一個(gè)可選類型總會(huì)有值。這種類型的可選狀態(tài)被定義為隱式解析可選類型鸿染。(把想要用做可選類型的后面的問號(hào)改成感嘆號(hào)指蚜,來聲明一個(gè)隱式解析可選類型)
    例:
        let possibleString: String? = "An optional string."
        let forcedString: String = possibleString! //每次都需要感嘆號(hào)(!)獲取值

        let assumedString: String! = "An implicitly unwrapped optional string."
        let implicitString: String = assumedString // 不需要感嘆號(hào)

    仍然可以把隱式解析可選類型當(dāng)做普通可選類型來判斷是否包含值:
        if (possibleString != nil) {
            print(possibleString)
        }

    也可以在可選綁定中使用隱式解析可選類型來檢查并解析它的值:
        if let definiteString = assumedString {
            print(definiteString)
        }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市涨椒,隨后出現(xiàn)的幾起案子摊鸡,更是在濱河造成了極大的恐慌,老刑警劉巖蚕冬,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件免猾,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡囤热,警方通過查閱死者的電腦和手機(jī)猎提,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來旁蔼,“玉大人锨苏,你說我怎么就攤上這事」琢模” “怎么了伞租?”我有些...
    開封第一講書人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)躺屁。 經(jīng)常有香客問我肯夏,道長(zhǎng),這世上最難降的妖魔是什么犀暑? 我笑而不...
    開封第一講書人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任驯击,我火速辦了婚禮,結(jié)果婚禮上耐亏,老公的妹妹穿的比我還像新娘徊都。我一直安慰自己,他們只是感情好广辰,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開白布暇矫。 她就那樣靜靜地躺著,像睡著了一般择吊。 火紅的嫁衣襯著肌膚如雪李根。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評(píng)論 1 308
  • 那天几睛,我揣著相機(jī)與錄音房轿,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛囱持,可吹牛的內(nèi)容都是我干的夯接。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼纷妆,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼盔几!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起掩幢,我...
    開封第一講書人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤逊拍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后粒蜈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體顺献,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年枯怖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了注整。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡度硝,死狀恐怖肿轨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蕊程,我是刑警寧澤椒袍,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站藻茂,受9級(jí)特大地震影響驹暑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜辨赐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一优俘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧掀序,春花似錦帆焕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至换吧,卻和暖如春折晦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背沾瓦。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工满着, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留打颤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓漓滔,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親乖篷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子响驴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

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