1

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

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)

删除该else语句会导致与上述相同的错误,但这次是预期的,因为n可能大于或等于 50。

4

2 回答 2

4

那不是错误。

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

所以如果它是假的,那么使用消息变量 println(message) 是一个编译错误。

这也可以忽略,具体取决于编译器的警告级别,这种警告可以忽略或不忽略。检查您的编译器设置。

于 2014-06-11T01:34:39.210 回答
0

var 消息:字符串!(添加 ! 将修复它。)

!=解开变量或者你把它放在后面的东西,就像?表示可选。

于 2014-10-12T03:26:34.953 回答