Swift 手动展开与带选项的let(如果允许)展开

Swift 手动展开与带选项的let(如果允许)展开,swift,optional,Swift,Optional,在Swift中处理可选项时,有两种不同的方法访问可选项后面的值(如果存在)。您可以进行手动检查: if someOptional != nil { doSomethingWithValue(someOptional!) } else { //handle nil... } 或者,您可以使用if let块自动展开可选的: if let unwrapped = someOptional { doSomethingWithValue(unwrapped) } else {

在Swift中处理可选项时,有两种不同的方法访问可选项后面的值(如果存在)。您可以进行手动检查:

if someOptional != nil {
    doSomethingWithValue(someOptional!)
}
else {
    //handle nil...
}
或者,您可以使用
if let
块自动展开可选的:

if let unwrapped = someOptional {
    doSomethingWithValue(unwrapped)
}
else {
    //handle nil...
}
出于任何原因,这些选项中的一个比另一个更可取吗?哪一个更地道


编辑:作为对接近票数的回应,我试图询问是否有理由出于偏好以外的任何原因使用一个而不是另一个,无论是出于性能原因、安全原因还是其他原因。

我认为您在“手动检查”中遗漏了一行代码:检查前

如果是可选的!=零

您宁愿通过以下方式分配:

someOptinal : <TypeOptional>? = anyFunctionThatProvidesAnOptional
someoptional:?=提供可选功能的任何功能

因此这是我的观点:第二种方法(所谓的“可选绑定”)将两行合并到一行中,因此它更短,因此更好。

好吧,两个代码段都假设
someOptional
是一个先前指定的可选类型的变量,虽然我不知道第二个怎么没有相同的问题…可能重复:。基本上也是基于观点的。是的,看起来这些都是重复的。投票以重复方式结束。