【发布时间】:2017-10-15 09:33:52
【问题描述】:
考虑下面的代码。
var a:Int?
a? = 10
print(a)
这里的变量 a 没有被赋值 10。如果是因为 '?'运算符,为什么编译器不显示编译错误?
【问题讨论】:
-
一般不要在赋值左侧的变量处使用感叹号和问号。
-
@Bibin P Sebastian 不过,你对 swift 中的可选 (?) 有什么困惑吗?
-
@Bibin P Sebastian 从技术上讲,您正在为可选解包的变量赋值。所以一个?评估为 nil 并且您正在尝试分配给 nil(即 nil = 10)。是否有意义。就编译器而言,它是一个有效的声明。