为什么我不能使用:
如果有些可选吗? {
语句
}
而不是
如果让constantName = someOptional {
语句
}
为什么不需要局部变量或常量?
答案 0 :(得分:5)
为什么我不能使用:if someOptional? {...}
因为可选变量的?
后缀是为optional chaining保留的,这允许您访问属性或调用给定可选变量的方法。例如:
// returns an optional version of a given property
let aProperty = anOptional?.someProperty
// calls the method if aProperty contains a value – otherwise doesn't
aProperty?.doSomething()
如果您只想检查可选项是否包含值,但不关心该基础值,则只需将其与nil
进行比较即可。例如:
if anOptional != nil {
// do something
}
答案 1 :(得分:1)
简单的答案是someOptional是一个Optional,而constantName是一个Type。
可选不仅仅是变量的状态,它是完全不同的类型。如果您要将var someOptional: String?
设置为var someOptional: String
,那么您不会解开someOptional,实际上您正在更改someOptional的类型。
它在功能上与将var someOptional: String
更改为var someOptional: Int