为什么要创建“隐式展开可选”而不是仅创建常规变量或常量?如果您知道它可以成功解包,那么为什么要首先创建一个可选项?例如,为什么会这样:
let someString: String! = "this is the string"
将比以下更有用:
let someString: String = "this is the string"
如果“可选项表明允许常量或变量具有‘无值’”,但“有时从程序的结构中可以清楚地看出,在第一次设置该值之后,可选项将始终具有值” ,首先将其设为可选有什么意义?如果你知道一个可选项总是有一个值,那不是让它不是可选的吗?
考虑一个对象在构造和配置时可能具有 nil 属性的情况,但之后是不可变且非 nil 的(NSImage 通常以这种方式处理,尽管在这种情况下,有时变异仍然有用)。隐式展开的可选项会很好地清理其代码,安全性损失相对较低(只要有一个保证,它就是安全的)。
(编辑)但要明确一点:常规选项几乎总是更可取的。