博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
swift的可选项--optional/?
阅读量:7087 次
发布时间:2019-06-28

本文共 801 字,大约阅读时间需要 2 分钟。

在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

你可能感兴趣的文章
没有所谓好与不好,只是能否适用和用的好
查看>>
Linux基础命令---gunzip
查看>>
Linux基础命令---文本编辑
查看>>
星矿科技完成千万元融资,专注明星IP价值商业化 ...
查看>>
Linux基础命令---ipcalc计算IP地址
查看>>
一位医疗 AI 创业者的自述:这个行业到底需要什么样的产品?
查看>>
重磅福利,阿里云携手合作伙伴向公益机构免费提供40多种软件服务!
查看>>
MyBatis 自定义 typeHandler
查看>>
MES、ERP已死,中国工业互联网呼唤新的智能模式!
查看>>
SpringMVC请求乱码
查看>>
Java NIO
查看>>
使用EMR-Flume同步Kafka数据到HDFS
查看>>
SSH访问安全配置方法之一
查看>>
MySQL 性能测试
查看>>
jdbc_分页查询,大数据,批处理,存储过程
查看>>
DKhadoop安装配置步骤教程与常见问题解决
查看>>
独家揭秘!阿里大规模数据中心的性能分析
查看>>
5.DI的配置使用
查看>>
Docker容器内部署Java微服务的内存限制问题
查看>>
pyhanlp用户自定义词典添加实例说明
查看>>