Swift中的可选变量

Swift中的可选变量

optional翻译成中文是”可选择的”, 在Swift里它标识一个变量可能为nil.
作为一个曾经搞过C++/C#/Java的人, 理解了十几遍, 才基本理解这个概念. 只能说, 苹果你太牛逼了.

普通变量

普通变量呢, 必须有初始值.
好有一比, 作为一个富二代, 爹很有钱, 生下来就有车了, 必须得有车!

var 座驾:汽车=汽车("奥迪")

普通变量用起来是这样的:

座驾.发动()
座驾.加速()
座驾.甩尾()
座驾.刹车()

可选变量

大部分人投胎技术不行, 不是生下来就有车, 但是万一咱将来有车了呢? 所以刚开始没车的咋办呢? 苹果帮你想到了, 你可以声明一个可选变量, 初始如果你不设置的话, 初始值默认为空.

var 座驾:汽车? 

然后你买了车

座驾=汽车("迈拓"")

以后使用这个变量的时候, 就得这样使用:

座驾!.发动()
座驾!.加速()
座驾!.甩尾()
座驾!.刹车()

我擦, 我的车为啥和人家的不一样! 后面都有一个"!" 每次都用"!"来取实际值, 是不是看上去很傻.
别担心, 苹果帮你想到了. 怎么能一眼被人看出屌丝的本质呢?
所以可以这样声明一个可选变量:

var 座驾:汽车!

然后买了车:

座驾=汽车("迈拓"")

以后使用这个变量的时候, 就可以这样使用了:

座驾.发动()
座驾.加速()
座驾.甩尾()
座驾.刹车()

是不是和富二代家的车看起来一样了! 但是, 你的车还是奥拓...
而且, 如果你不设置值, 会报nil异常的

可选变量的好处

可选变量的唯一好处是可以处理nil的状态. 苹果应该是趋向于让你使用普通变量的.

可选链

class 天窗{
    var 宽度=20公分
}
class 汽车{
    天窗:天窗?
}
var 座驾:汽车?
let 天窗宽度=座驾?.天窗?.宽度

天窗宽度也许是nil,
也许是20公分, 如果是20公分, 那就是货真价实的20公分, 不是可选值哦

判断语句的语法糖

使用下面的方式, 可以免去nil判断.

if let 我的座驾=座驾{
    座驾.启动()
} 

看到没, 不用!了, "我的座驾" 是正常变量, 不是可选变量.

显示转换

var  座驾:汽车?
座驾=汽车("奥拓)
座驾?.甩尾()
let 真座驾无双=座驾!
真座驾无双.甩尾()

转换之后, 变成正常变量, 不是可选变量.

你可能感兴趣的:(Swift中的可选变量)