Swift中的可選變量
optional翻譯成中文是”可選擇的”, 在Swift里它標識一個變量可能為nil.
作為一個曾經搞過C++/C#/Java的人, 理解了十幾遍, 才基本理解這個概念. 只能說, 蘋果你太牛逼了.
普通變量
普通變量呢, 必須有初始值.
好有一比, 作為一個富二代, 爹很有錢, 生下來就有車了, 必須得有車!
var 座駕:汽車=汽車("奧迪")
普通變量用起來是這樣的:
座駕.發(fā)動()
座駕.加速()
座駕.甩尾()
座駕.剎車()
可選變量
大部分人投胎技術不行, 不是生下來就有車, 但是萬一咱將來有車了呢? 所以剛開始沒車的咋辦呢? 蘋果幫你想到了, 你可以聲明一個可選變量, 初始如果你不設置的話, 初始值默認為空.
var 座駕:汽車?
然后你買了車
座駕=汽車("邁拓"")
以后使用這個變量的時候, 就得這樣使用:
座駕!.發(fā)動()
座駕!.加速()
座駕!.甩尾()
座駕!.剎車()
我擦, 我的車為啥和人家的不一樣! 后面都有一個"!" 每次都用"!"來取實際值, 是不是看上去很傻.
別擔心, 蘋果幫你想到了. 怎么能一眼被人看出屌絲的本質呢?
所以可以這樣聲明一個可選變量:
var 座駕:汽車!
然后買了車:
座駕=汽車("邁拓"")
以后使用這個變量的時候, 就可以這樣使用了:
座駕.發(fā)動()
座駕.加速()
座駕.甩尾()
座駕.剎車()
是不是和富二代家的車看起來一樣了! 但是, 你的車還是奧拓...
而且, 如果你不設置值, 會報nil異常的
可選變量的好處
可選變量的唯一好處是可以處理nil的狀態(tài). 蘋果應該是趨向于讓你使用普通變量的.
可選鏈
class 天窗{
var 寬度=20公分
}
class 汽車{
天窗:天窗?
}
var 座駕:汽車?
let 天窗寬度=座駕?.天窗?.寬度
天窗寬度也許是nil,
也許是20公分, 如果是20公分, 那就是貨真價實的20公分, 不是可選值哦
判斷語句的語法糖
使用下面的方式, 可以免去nil判斷.
if let 我的座駕=座駕{
座駕.啟動()
}
看到沒, 不用!了, "我的座駕" 是正常變量, 不是可選變量.
顯示轉換
var 座駕:汽車?
座駕=汽車("奧拓)
座駕?.甩尾()
let 真座駕無雙=座駕!
真座駕無雙.甩尾()
轉換之后, 變成正常變量, 不是可選變量.