swift的可选项--optional/?

在swift里定义一个变量/常量时,会有一个与OC里不一样的概念:可选项。可选项的定义的意义就是告诉编辑器:此变量的可以有值,也可以为空。

第一:可选项的包装和强行解包。

表示方式:



以上可以被称为是wrapped

在调用的时候可以被称为unwrapped



其中:常量和变量的默认可选项是不一样的。

常量的默认可选项:没有

变量的可选项:nil

不管是常亮还是变量,初始值只能初始化一次!!,并且,常量不能被赋值(初始化后赋值)。

在强行解包的时候,如果是nil,就会崩溃。因为,nil不能参与运算。


第二:??简单三目的使用

为了解决强行解包的时候可能出现崩溃的问题,我们一般要对强行解包的对象进行是否为空的判断,但是这样的话,也就失去了swift设计的初衷,并且要是每个都判断的话就会使代码变的特别的冗余。

那么,怎么解决呢?swift出了一个??操作,它是一个简单的三目,用来判断是否为nil,不为nil,就使用原来的值,否则就是??后面我们给它设置的值。

如下?:



第三:免强行解包

虽说使用??可以更加简化判断的代码,但毕竟是尚有操作。swift里还有一个运算符,就是iflet/var, 它的作用是做一下判断,不为nil的话,才能进入执行大括号里去执行代码。这样就免除了多余的代码。

如下?:



最后:为了更为符合我们的开发习惯,swift推出了guardlet,它和iflet一样,但是结构上刚好相反。一是进入执行的变量有一个为nil,二是不是nil的时候的变量的作用域更大一层。

如下?:



PS:iflet和guardlet在解决解包的时候,受用的特别频繁,也是做常用的。再次有一个小细节,那就命名,一般情况下,我们都是使用相同的名字,这样就减少了重命名,并且其他的都不变。

如下?:






转载于:https://juejin.im/post/5b4721056fb9a04f951d0752

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值