swift - 为什么总是输入条件语句时这个变量没有初始化?

标签 swift swift-playground

运行此代码会导致最后一行出现错误“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/

相关文章:

ios - 如何变换 uilabel 保持其 x 位置相同并缩放以减小字体大小

swift - 即使在设备旋转后也约束/居中 CAEmitterLayer

ios - Swift Playground - 对类使用未实现的初始化程序 'init(size:)'

swift - 更改 UITableView 中的颜色单元格 以前记录的 Swift

swift - AWS Dynamodb 对象映射器错误

ios - Playground 上选定设备错误的运行时

swift - Playground 中的 UIView

swift - 如何通过手指移动来移动 CAShapeLayer 而不会出现延迟

ios - 如何拥有标签列表及其下方的其他项目

ios - 如何在 iOS 中给 blurrview 上色?