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

时间:2015-07-31 23:33:49

标签: swift if-statement

我有以下代码:

let FOO = true
if (FOO) {
    let BAR = "Off"
} else {
    let BAR = "On"
}
print(BAR)

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

  

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

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

2 个答案:

答案 0 :(得分:9)

BAR的范围仅限于if/else,因此您无法在代码中稍后引用它。

但你可以做到

let foo = true
let bar: String
if (foo) {
    bar = "Off"
} else {
    bar = "On"
}
print(bar)

编译器能够意识到bar仅在使用前分配了一次,所以这将编译得很好。

答案 1 :(得分:1)

这是因为BAR只是if和else语句的局部变量,所以请尝试使用此代码。

let FOO = true
var BAR = ""
if (FOO) {
   BAR = "Off"
} else {
   BAR = "On"
}
print(BAR)