Swift:如果变量a是非可选的,那么为什么变量b是可选的?

时间:2017-07-31 11:01:30

标签: swift optional

我试图理解swift中隐式解包的可选项,我对第二个变量感到困惑,如下图所示。

please see image here

为什么变量b是可选的?

1 个答案:

答案 0 :(得分:1)

变量b是可选的,因为变量a'可能'返回nil,在这种情况下b也将是nil。

编辑: 您已将可选变量分配给另一个尚未为其定义特定类型的变量。 Xcode通过创建变量b作为可选项来节省您的时间。考虑这个例子:

var a: Int! = 6
a = nil
let b: Int = a
print(b)

与你的类似,变量a这里是Int类型的可选项,b也是Int类型的非可选项。在这里,我特别将b定义为与b变量不同的非可选整数。现在,如果我尝试打印变量谁被赋值的那个点在那时为零。这很危险,只会在赋值语句中导致致命错误。简单地理解崩溃是因为编译器在可选类型中找到nil值并尝试将其分配给非可选类型。

只有optionals可以保持nil值,因此当你为另一个变量b分配一个可选(nillable)时,它会自动被视为一个可选项,因为它所依赖的值是nillable,因此变量b也是nillable。