为什么我们不需要为局部变量提供初始值?

时间:2017-12-06 11:26:49

标签: ios swift

当我突然学习的时候,我想知道自己: 为什么我们必须为全局(甚至超出类范围)变量提供初始值,但我们不必对这样的局部变量执行相同的步骤?有什么理由吗?

if importRequired {
    let deleteObjectCount: Int    
}

1 个答案:

答案 0 :(得分:2)

允许,因为deleteObjectCount从未在您的代码中使用过。并且 - 这是全局变量的差异 - 编译器可以检查这个事实。

你甚至可以这样做:

let importRequired = true

if importRequired {
    let deleteObjectCount: Int    
    deleteObjectCount = 5
    print (deleteObjectCount)
}

(例如,修改常量let变量)因为编译器检查该常量只写一次,这是在读取之前完成的它的价值。

相比之下,全局变量必须直接初始化,否则编译器无法保证在初始化之前它们已经如此(因为可以从程序中的任何位置访问)。