Swift2.0 允许在闭包内使用未初始化的全局变量的奇怪情况

Strange case where Swift2.0 allows usage of an uninitialised global inside a closure

没错,这种情况有点扭曲,但我仍然很好奇这是否是 Swift2.0 编译器中的潜在错误。在你的 Xcode7 playground-

试试这个
var global : Int

var factorial : (Int->Int)!

factorial = { x in

    global = global  + 1
    print(global)
    return x == 0 ? 1 : x * factorial(x - 1)
}

factorial(5)

编译器愉快地编译甚至计算阶乘并递增全局变量,甚至在调用时在闭包内显示全局变量的值。现在尝试在调用 factorial(5) 后打印全局,现在编译器突然开始抱怨你在初始化之前尝试使用 'global'!

我认为这是编译器某处的错误,行为必须保持一致。但首先想到咨询专家!有什么想法吗?

在我看来像是一个错误。对我来说,在 Swift 1.2 和 2.0 中都可重现。归档雷达,Apple 将对此表示赞赏。