Swift - 可選類型

在實(shí)際開發(fā)過程中,經(jīng)常會(huì)遇到一個(gè)數(shù)據(jù)可能有值,也可能沒有值的情況。針對(duì)這種情況,Swift增加了可選類型(Optional)??蛇x類型可以生命所有的數(shù)據(jù)類型。
可選類型的聲明
在聲明常量或變量時(shí),在類型后面加問號(hào)(?),就表示它是可選的。
(1)可選常量:

let a:Int?

可選常量沒有默認(rèn)值,在使用之前必須設(shè)置初值。

可選常量必須設(shè)置初值

(2)可選變量:

var x:Int?

可選變量如果不給賦初值,它的默認(rèn)值為 nil

可選變量默認(rèn)為nil
可選變量賦初值的打印結(jié)果

注意:Swift中的nil和Objective-C中的nil不一樣。在OC中,nil表示空指針,只能用于對(duì)象類型,在Swift中,沒有指針的概念,nil的含義是一個(gè)值,表示值的缺失,可用于任何類型。

解包
可選類型不能直接參與計(jì)算,參與計(jì)算時(shí)需要進(jìn)行解包。解包的方法是在可選項(xiàng)后加感嘆號(hào)(!)。

let x:Int? = 10
print(x! + 2)

在解包前,可選項(xiàng)必須有值


可選項(xiàng)沒有值進(jìn)行計(jì)算會(huì)報(bào)錯(cuò)

隱式解析
可選類型每次解包很麻煩,可以采用隱式解析的方法,在聲明時(shí)將數(shù)據(jù)類型后的問號(hào)改成嘆號(hào)。

let x:Int! = 10
var y:Int!= 20

如果變量的值可能為nil,不要用隱式解析的方法

空合并運(yùn)算符
可選類型如果為空是不能參與運(yùn)算的,所以在使用之前要對(duì)其進(jìn)行判斷,空合并運(yùn)算符可以簡(jiǎn)化運(yùn)算:

空合并運(yùn)算符相當(dāng)于算目運(yùn)算符:a! = nil ? a! : b??蘸喜⑦\(yùn)算符更加簡(jiǎn)潔,可讀性增強(qiáng)。

使用空合并運(yùn)算符需要注意,必須符合以下兩個(gè)條件:

  • 表達(dá)式 a 必須是可選類型
  • 默認(rèn)值b的數(shù)據(jù)類型必須與 a 的值 數(shù)據(jù)類型一致

OK,這就是可選類型的聲明和基本用法,明天分享控制流。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 在值可能不存在的情況下,您可以使用可選值。 可選表示兩種可能性:有一個(gè)值,您可以解開可選值以訪問該值,或者根本沒有...
    Joker_King閱讀 428評(píng)論 0 0
  • 可選類型 在Swift中,可選類型其根源是一個(gè)枚舉型,里面有None和Some兩種類型.其實(shí)所謂的nil就...
    Amok校長(zhǎng)閱讀 343評(píng)論 0 0
  • 關(guān)于 Swift 重要這個(gè)文檔所包含的準(zhǔn)備信息, 是關(guān)于開發(fā)的 API 和技術(shù)的。這個(gè)信息可能會(huì)改變, 根據(jù)這個(gè)文...
    無灃閱讀 4,624評(píng)論 1 27
  • 可選類型 聲明變量或常量的時(shí)候,代表可以有值,也可以無值。在類型標(biāo)注后面,用?表示當(dāng)其沒有值時(shí)可以賦值nil 如果...
    fylq閱讀 905評(píng)論 0 1
  • 1 突然打了一個(gè)激靈。肌肉牽扯著, 他睡了多久了? 不,是壓根就沒睡過吧?;秀敝刑鹱约憾颊J(rèn)為沒有了的眼皮,電燈一...
    麟十行閱讀 155評(píng)論 0 0

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