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

NiC*_*JaY 1 optional swift

我是新来的.刚刚开始学习Swift,当我谈到可选项的主题时,我开始想知道未初始化变量的默认值是什么.

在Java中,'int'被初始化为0.在C中,它获得垃圾值.那么Swift是什么?为了更精确一点,当我写"var x:Int"时,存储在x中的是什么?

另外,如果未初始化的对象"var c:UIColor"不能指向nil,它指向什么?

Luc*_*tti 6

非期权

如果你声明一个这样的变量

var color: UIColor
Run Code Online (Sandbox Code Playgroud)

变量的状态是Uninitalized.这意味着编译器在初始化之前不允许您读取它.

print(color)
>> error: variable 'color' used before being initialized
Run Code Online (Sandbox Code Playgroud)

更多

有趣的是,编译器足够聪明,可以检查代码的所有分支是否在使用之前初始化变量.

例如,此代码将产生错误,因为编译器无法保证colorprint(color)执行之前已初始化.

var color: UIColor
let random = arc4random_uniform(10)
if random > 5 {
    color = UIColor.redColor()
}
print(color)
// error: variable 'color' used before being initialized
Run Code Online (Sandbox Code Playgroud)

选配

另一方面,如果您将变量声明为可选

var color: UIColor?
Run Code Online (Sandbox Code Playgroud)

它被初始化了 nil

print(color)
// nil
Run Code Online (Sandbox Code Playgroud)