根据apple文档,下面的代码检查convertNumber是否已经初始化,如果是,则执行if块。
let convertedNumber: Int?
if convertedNumber {
//do stuff
}
我对幕后发生的事情很感兴趣。这是一种简写符号,因为if语句中的条件必须求值为布尔值true或false。 convertNumebr包含转换为true或false的值的事实是怎样的?
我在想这是一个简写符号:
if convertedNumber!=nil {
//do stuff
}
如果我错了,请纠正我。
答案 0 :(得分:3)
"速记测试"选项
if someOptional {
//do stuff
}
仅存在于Swift的早期版本中。 来自Xcode 6 beta 5发行说明:
Optionals不再符合BooleanType(以前的LogicValue) 协议,因此它们可能不再用于代替布尔值 表达式(必须与v!= nil明确比较)。这个 解决了Bool周围的困惑?和相关类型,使代码更多 明确了预期的测试,并且更符合 其余的语言。
因此,对于当前的Xcode版本,您必须使用
进行测试if someOptional != nil {
//do stuff
}
,当然还有可选的绑定。
此外,struct Optional
符合NilLiteralConvertible
协议,以便(在此上下文中)nil
与...相同
匹配类型为Optional<T>.None
的{{1}}。