Swift:如果变量 a 是非可选的,那么为啥变量 b 是可选的? [复制]

Posted

技术标签:

【中文标题】Swift:如果变量 a 是非可选的,那么为啥变量 b 是可选的? [复制]【英文标题】:Swift : If variable a is non-optional then why variable b is an optional? [duplicate]Swift:如果变量 a 是非可选的,那么为什么变量 b 是可选的? [复制] 【发布时间】:2017-07-31 11:01:29 【问题描述】:

我试图快速理解隐式解包可选,我对下图中的第二个变量感到困惑。

为什么变量 b 是可选的?

【问题讨论】:

因为它没有明确的类型声明并且它具有来自a的值。尝试将:Int 设置为类型 请发布代码,而不是图片。 craiggrummitt.com/2016/06/29/… 可能对你有帮助 【参考方案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 变量不同的非可选整数。现在,如果我尝试打印分配了 a 的值的变量,该变量当时为 nil。这是危险的,只会导致赋值语句出现致命错误。崩溃的理解很简单,因为编译器在可选类型中找到了一个 nil 值,并尝试将其分配给非可选类型。

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

【讨论】:

a 怎么可能是 nil,它是非可选的,非可选的永远不会是 nil。如果可能,请举个例子。 希望编辑有所帮助.. 非常感谢,我知道了。

以上是关于Swift:如果变量 a 是非可选的,那么为啥变量 b 是可选的? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Swift 可选绑定,为啥需要本地 var?

Swift之Optional 可选值

为啥 Django DecimalField 属性“max_digits”是非可选的?

在swift中,为什么UIlabel是可选的?

为啥 Swift 隐式展开可选的“nil”?

Swift 中未初始化变量/对象的默认值