一尘不染

为什么要创建“隐式展开的可选项”,因为这意味着您知道存在价值?

swift

为什么只创建一个正则变量或常量而不是创建一个“隐式展开的可选”?如果您知道可以成功解包,那么为什么首先要创建一个可选的?例如,为什么这样:

let someString: String! = "this is the string"

比以下内容更有用:

let someString: String = "this is the string"

如果“可选参数指示允许常量或变量具有’无值’”,但“有时从程序的结构中可以看出,可选参数在首次设置该值后将始终具有一个值”,这是什么意思呢?首先使它成为可选项?如果您知道可选值总是会有一个值,那不是使它成为非可选值吗?


阅读 273

收藏
2020-07-07

共1个答案

一尘不染

考虑一个对象的情况,该对象在构造和配置时可能具有nil属性,但是此后是不可变的且非nil(NSImage通常被用这种方式处理,尽管在这种情况下,有时仍然有用)。隐式解开的可选对象将清理其代码,并且安全损失相对较低(只要持有一个保证,它将是安全的)。

(编辑)不过要清楚:常规的可选几乎总是首选。

2020-07-07