如果某些可选参数不是nil,执行代码的最佳方法是什么?显然,最明显的方法是直接检查该值是否为nil:

if optionalValue != nil {
     //Execute code
}

我还看到了以下内容:
if let _ = optionalValue {
    //Execute code
}

第二个似乎更快捷,因为它使用了可选的链接。使用一种方法相对于另一种方法有什么优势?有更好的方法吗?无论如何,我的意思是“更符合Swift”。

最佳答案

如果您确实需要未包装的值,则应使用可选的绑定(bind)。这是较长表达的捷径,我认为应该以这些术语考虑。实际上,在swift 1.2中,此可选绑定(bind)表达式:

if let unwrapped = optional {
    println("Use the unwrapped value \(unwrapped)")
}

是这样的代码的语法糖(请记住,可选参数实际上是Optional<T>枚举的实例):
switch optional {
case .Some(let unwrapped):
    println("Use the unwrapped value \(unwrapped)")
case .None:
    break
}

使用可选绑定(bind)而不将未包装的值分配给变量,就像有一个盒子里面可能装有电视。如果您要检查盒子是否为空,则不要将电视机从盒子中取出-只需打开盒子并向里看即可。

因此,如果您需要在某个变量不是nil的情况下执行一些代码,但是您不需要或不使用可选变量中包含的实际值,那么我认为not-nil检查是最好的方法它。

10-05 22:04