在Swift中检查选项的首选方法

时间:2014-11-01 20:19:53

标签: swift optional

在使用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"
}

使用哪种方法检查可选项是否重要?

3 个答案:

答案 0 :(得分:5)

它们是等效的,但使用起来更好:

  • let x = item(可选绑定),当您确实需要并使用未包装的值
  • item != nil当您只是需要知道它不是nil,但您不需要其未包装的价值时

通过可选绑定进行展开会产生成本,因此如果您不需要该值,则没有理由将其解压缩并分配给变量。另一方面,如果你需要这个值,如果你只通过可选绑定解包一次(并避免使用强制解包!

,那就更好了。

答案 1 :(得分:2)

这样看:

使用选项A,系统必须打开两次可选项。一旦检查它是否为零,并且一次处理!

使用选项B,系统只需在执行分配时解包可选的一次。

在任何特定情况下,请使用减少编译器解包可选项的次数的代码。

答案 2 :(得分:0)

选项一评估您的选项是否为空,并允许您使用感叹号自动解包它。

如果您的optional与null不同,则第二个选项将可选值绑定到指定的变量。