为什么在始终输入条件语句时未初始化此变量?

时间:2014-06-11 01:27:50

标签: swift swift-playground

运行此代码会在最后一行导致错误“变量'消息'在初始化之前使用。

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。

2 个答案:

答案 0 :(得分:4)

这不是错误。

编译器没有考虑if语句中表达式的当前结果。 编译器理解的是这个if语句也可以是false。

因此,如果它为false,则使用消息变量println(message)是编译错误。

根据编译器的警告级别,这也可以忽略,这种警告可以忽略不计。 检查编译器设置。

答案 1 :(得分:0)

var message:String! (添加!将修复它。)

! =解开变量或者你把它放在后面,就像?意味着可选。