运行此代码会在最后一行导致错误“变量'消息'在初始化之前使用。
var message: String
if true {
message = "Hello, world"
}
println(message)
由于if
语句始终为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)
删除else
语句会产生与上述相同的错误,但这次是预期的,因为n
可能大于或等于50。
答案 0 :(得分:4)
这不是错误。
编译器没有考虑if语句中表达式的当前结果。 编译器理解的是这个if语句也可以是false。
因此,如果它为false,则使用消息变量println(message)是编译错误。
根据编译器的警告级别,这也可以忽略,这种警告可以忽略不计。 检查编译器设置。
答案 1 :(得分:0)
var message:String! (添加!将修复它。)
! =解开变量或者你把它放在后面,就像?意味着可选。