【发布时间】:2017-07-31 11:01:29
【问题描述】:
我试图快速理解隐式解包可选,我对下图中的第二个变量感到困惑。
为什么变量 b 是可选的?
【问题讨论】:
-
因为它没有明确的类型声明并且它具有来自a的值。尝试将
:Int设置为类型 -
请发布代码,而不是图片。
-
craiggrummitt.com/2016/06/29/… 可能对你有帮助
我试图快速理解隐式解包可选,我对下图中的第二个变量感到困惑。
为什么变量 b 是可选的?
【问题讨论】:
:Int 设置为类型
变量 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 变量不同的非可选整数。现在,如果我尝试打印分配了 a 的值的变量,该变量当时为 nil。这是危险的,只会导致赋值语句出现致命错误。崩溃的理解很简单,因为编译器在可选类型中找到了一个 nil 值,并尝试将其分配给非可选类型。
只有可选项可以保存 nil 值,因此当您将可选项(可空)分配给另一个变量 b 时,它会自动被视为可选项,因为它所依赖的值是可空的,因此变量 b 也是可空的。
【讨论】: