一尘不染

展开Swift可选,无需重新分配变量

swift

当使用可选绑定解开单个方法调用(或长方法调用链的可选链接)时,语法清晰易懂:

if let childTitle = theItem.getChildItem()?.getTitle() {
    ...
}

但是,当将变量作为参数提供时,我发现自己使用了:

func someFunction(childTitle: String?) {
    if let theChildTitle = childTitle {
        ...
    }
}

甚至只是用相同的名称重新定义它:

if let childTitle = childTitle { ... }

我开始怀疑,是否存在一种快捷方式或更有效地执行nil检查,其唯一目的是使用现有变量。我曾想过:

if let childTitle { ... }

是否存在类似的方法,或者至少是上述两种临时解决方案的替代方法?


阅读 187

收藏
2020-07-07

共1个答案

一尘不染

不。您应该使用与您提到的名称相同的名称重新定义选配项。这样,您无需创建第二个变量。

func someFunction(childTitle: String?) {
    if let childTitle = childTitle {
        ...
    }
}

更新: Xcode 7.1.1•Swift 2.1

您还可以按如下方式使用防护:

func someFunction(childTitle: String?) {
    guard let childTitle = childTitle else {
        return
    }

    // childTitle it is not nil after the guard statement
    print(childTitle)
}
2020-07-07