在使用Swift中的选项时,似乎有两种方法可以检查可选类型是否为nil
。
var item: String? = "apple"
// Approach A
if item != nil {
"item is \(item!)"
} else {
"no item"
}
// Approach B
if let x = item {
"item is " + x
} else {
"no item"
}
使用哪种方法检查可选项是否重要?
答案 0 :(得分:5)
它们是等效的,但使用起来更好:
let x = item
(可选绑定),当您确实需要并使用未包装的值item != nil
当您只是需要知道它不是nil
,但您不需要其未包装的价值时通过可选绑定进行展开会产生成本,因此如果您不需要该值,则没有理由将其解压缩并分配给变量。另一方面,如果你需要这个值,如果你只通过可选绑定解包一次(并避免使用强制解包!
)
答案 1 :(得分:2)
这样看:
使用选项A,系统必须打开两次可选项。一旦检查它是否为零,并且一次处理!
。
使用选项B,系统只需在执行分配时解包可选的一次。
在任何特定情况下,请使用减少编译器解包可选项的次数的代码。
答案 2 :(得分:0)
选项一评估您的选项是否为空,并允许您使用感叹号自动解包它。
如果您的optional与null不同,则第二个选项将可选值绑定到指定的变量。