我有以下代码:
let FOO = true
if (FOO) {
let BAR = "Off"
} else {
let BAR = "On"
}
print(BAR)
我的问题是说print(BAR)
的行返回错误:
使用未解析的标识符' BAR'
从我所看到的,没有理由这个代码不应该编译吗?始终会创建常量BAR
,因此始终可以打印到控制台。
答案 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)