当我突然学习的时候,我想知道自己: 为什么我们必须为全局(甚至超出类范围)变量提供初始值,但我们不必对这样的局部变量执行相同的步骤?有什么理由吗?
if importRequired {
let deleteObjectCount: Int
}
答案 0 :(得分:2)
允许,因为deleteObjectCount
从未在您的代码中使用过。并且 - 这是全局变量的差异 - 编译器可以检查这个事实。
你甚至可以这样做:
let importRequired = true
if importRequired {
let deleteObjectCount: Int
deleteObjectCount = 5
print (deleteObjectCount)
}
(例如,修改常量let
变量)因为编译器检查该常量只写一次,这是在读取之前完成的它的价值。
相比之下,全局变量必须直接初始化,否则编译器无法保证在初始化之前它们已经如此(因为可以从程序中的任何位置访问)。