このコードを実行すると、最後の行に「Variable 'message' used before being initialized」というエラーが表示されます。
var message: String
if true {
message = "Hello, world"
}
println(message)
if
ステートメントは alwaysであるためtrue
、コンパイラmessage
は が初期化されていないと考えるのはなぜですか? 多分これはバグですか?
この例は機能します:
var message: String
var n = 70
if n < 50 {
message = "n is less than 50"
} else {
message = "n is greater than or equal to 50"
}
println(message)
ステートメントを削除すると、上記と同じエラーが発生しますが、50 以上になる可能性があるelse
ため、今回は予想どおりです。n