在Swift中编写此代码时,为什么会出现"使用未解析的标识符"错误?

Kia*_*oss 1 if-statement swift

我有以下代码:

let FOO = true
if (FOO) {
    let BAR = "Off"
} else {
    let BAR = "On"
}
print(BAR)
Run Code Online (Sandbox Code Playgroud)

我的问题是print(BAR)返回错误的行:

使用未解析的标识符'BAR'

从我所看到的,没有理由这个代码不应该编译吗?BAR始终会创建常量,因此始终可以打印到控制台.

Gab*_*lla 9

范围BAR仅限于if/else以后您不能在代码中引用它.

但你可以做到

let foo = true
let bar: String
if (foo) {
    bar = "Off"
} else {
    bar = "On"
}
print(bar)
Run Code Online (Sandbox Code Playgroud)

编译器能够实现bar仅在使用前分配一次,因此这将编译得很好.