为什么要创建一个“隐式未包装的可选”vs只创建一个常规变量或常量?
如果您知道它可以成功地展开,那么为什么要首先创建一个可选选项呢?
举个例子,为什么是这样:
let someString: String! = "this is the string"
将比以下更有用:
let someString: String = "this is the string"
如果“可选项表示一个常量或变量允许‘没有值’”,但是“有时从程序的结构中可以清楚地看出,一个可选项在第一次设置值之后总是有一个值”,那么首先使它成为可选项的意义是什么?
如果你知道一个optional总是有一个值,那它不是可选的吗?
我认为Optional是这个结构的一个不好的名字,它会让很多初学者感到困惑。
其他语言(例如Kotlin和c#)使用术语Nullable,这使它更容易理解。
Nullable意味着可以将空值分配给这种类型的变量。如果它是Nullable<SomeClassType>,你可以给它赋空值,如果它只是SomeClassType,你不能。这就是Swift的工作方式。
为什么要使用它们?有时候你需要空值,这就是原因。例如,当您知道希望在类中有一个字段时,但是在创建该类的实例时不能将其分配给任何东西,但稍后会这样做。我就不举例子了,因为人们已经在这里提供了例子。我写这些只是为了表达我的意见。
顺便说一句,我建议你看看这在其他语言中是如何工作的,比如Kotlin和c#。
下面是Kotlin中解释这一特性的链接:
https://kotlinlang.org/docs/reference/null-safety.html
其他语言,如Java和Scala确实有可选选项,但它们的工作方式与Swift中的可选选项不同,因为Java和Scala的类型默认都是可空的。
总而言之,我认为这个功能应该在Swift中被命名为Nullable,而不是Optional…