我的理解:如果您定义一个可选变量而不分配任何值,则编译器将自动分配nil
代码片段:
A:
var someOptional : Int? //Change to `let` to trigger error
var aDefaultValue = 42
var theAnswer = someOptional ?? aDefaultValue
上面的代码片段运行良好,但当我将变量 someOptional
更改为常量时,编译器会报错(请参见下面附加的图像)。
B: 然后我尝试了相似的代码以解决这个问题。
var someOptional : Int?
print(someOptional)
但是,它在变量类型下运行良好,但在常量类型下失败。
结论:
如果您定义一个常量可选项,而且如果您的意思是赋值为nil
,那么您必须显式地进行赋值。因为如果编译器自动为您执行该操作,它看起来没有用处(为什么您需要将常量选项分配给nil
),这可能会引入错误。
问题:
为什么编译器假设var
声明的可选项为nil
,但不适用于let
声明的可选项?