在编程世界中有一种非常通用的模式,那就是某个操作是否要返回一个有效值。
在swift开发中,nil也是一个特殊的类型.因为和真实的类型不匹配是不能赋值的(swift是强类型语言)
但是开发中赋值nil,在所难免.因此推出了可选类型
可选类型的取值:有值、空值
可选值的目的:让代码更严谨
可选值概览
1、 定义
2、应用场景
3、if let
当遇到 nil 时终止的循环
使用if let来进行可选绑定(optional binding)
4、while let
当遇到 nil 时终止的循环
nil 合并运算符
?? 操作符连接的使用默认值的语句,它代表 “这是一个默认值”
1、基本使用
2、合并操作也能够进行链接(有多个可选值,并且想要按照顺序选取其中非 nil 的值)
3、??和if let的配合使用(可看作是和“or”语句类似)
4、而多个if let语句并列则等价于 “and”
5、双重嵌套的可选值
因为可选值是链接的,如果你要处理的是双重嵌套的可选值,并且想要使用 ?? 操作符的话,你 需要特别小心 a ?? b ?? c 和 (a ?? b) ?? c 的区别。前者是合并操作的链接,而后者是先解包 括号内的内容,然后再处理外层:
可选值中的map和flatMap
1、可选值 map
可选值的 map 方法只会操作一个值,那就是该可选值中的那个可能的值,这一点与序列中的map有所不同
2、可选值 flatMap (展平可选值)
3、使用 map 和 flatMap 来重写多个 if let 的语句
4、使用 flatMap 过滤 nil
强制解包的时机
当你能确定你的某个值不可能是 nil 时可以使用叹号
其实你也可以使用source.flatMap { $0 }这个方法替代 !
改进强制解包的错误信息
|
|
在调试版本中进行断言
在调试时触发断言,但是在发布版本中打印 0