可选值
4.4强制解包的时机
几种强制解包的观点
1、绝不使用
2、代码逻辑更清晰的时候使用
3、不可避免的时候使用
我们通过特定的方法让可选值变成必选值,从而巧妙的避开
强制解包。
可以先用filter
去对序列进行排空处理,再通过map
进行映射和排序。
如下面这个例子:
let ages = ["liaoWorking":17,"wangzhuxian":16]
///有强制解包
ages.keys.filter { name in ages[name]! < 50 }.sorted()
///巧妙的避开了强制解包
ages.filter { (_, age) in age < 50 }
.map { (name, _) in name }
.sorted()
没怎么用过filter 和map的同学 先看一遍,再敲一遍,大概就知道其用途了。敲一遍还是很有用
的🦆。
改进强制解包的错误信息
强制解包引起的崩溃,无法从输出中获得崩溃的原因。
书中介绍了@autoclosure
注解 后面我们会对其用法专门讲解。 这里先说一句是 需要的时候去执行操作符右侧
的语句。
在调试版本中进行断言
我们只会在开发版本中进行断言(assert
),发布版本就算了。
书中主要讲了利用断言进行调试
assert(Bool, "error here") ///其中Bool为false时执行断言“error here”
注:断言assert 是仅在Debug 版本起作用
网友评论