我的关于"Swift编程语言"的iBook包含以下描述强制解包if语句的功能示例:
let possibleNumber = "123"
let convertedNumber = possibleNumber.toInt()
if convertedNumber {
println("\(possibleNumber) has an integer value of \(convertedNumber!)")
} else {
println("\(possibleNumber) could not be converted to an integer")
}
// prints "123 has an integer value of 123”
Run Code Online (Sandbox Code Playgroud)
但这不适合我.Xcode的(6.0.1)要求我明确地比较nil ,如
if (convertedNumber != nil) {
println("\(possibleNumber) has an integer value of \(convertedNumber!)")
} else {
println("\(possibleNumber) could not be converted to an integer")
}
Run Code Online (Sandbox Code Playgroud)
我的iBook错了吗?
是的,这是错的,或者更好,它已经过时了.行为在2014年4月8日发布时已更改,您可以在此处查看更改日志.相关部分:
Optionals不再隐式评估
true它们何时具有值,而不是隐式评估它们何时不使用,以避免在使用可选Bool值时出现混淆.相反,使用==或!=运算符对nil进行显式检查,以确定可选项是否包含值.
话虽这么说,你可以删除括号
if convertedNumber != nil {
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |