运行此代码会导致最后一行出现错误“Variable 'message' used before initialized”。
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。
最佳答案
这不是错误。
编译器没有考虑 if 语句中表达式的当前结果。 编译器理解的是这个 if 语句也可以为假。
所以如果为假,那么使用消息变量println(message)是一个编译错误。
这也可以忽略,这取决于你的编译器的警告级别,这种警告可以忽略也可以不忽略。 检查您的编译器设置。
关于swift - 为什么总是输入条件语句时这个变量没有初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24153329/