为什么可以使用文字初始化可选项?

时间:2016-03-30 12:07:02

标签: swift

为什么这样做:

let xxx : Optional<Int> = 1

我的期望是我必须说以下(也有效):

let xxx : Optional<Int> = .Some(1)

1 个答案:

答案 0 :(得分:2)

来自Apple的The Swift Programming Language书(重点是我的):

  

类型Optional是一个包含两种情况的枚举,None和   一些(包裹),用于表示可能会或可能不会的值   出席。任何类型都可以显式声明为(或隐式)   转换为)可选类型。如果您没有提供初始值   当您声明可选变量或属性时,其值   自动默认为零。

因此,在Swift Optional<Wrapped>中只是enum的一个特例,为此定义了来自任何类型的隐式转换,并且您编写的行实际上是等效的。所以@nhgrif is right:它是一种语法糖。

UPDATE (来自评论):由于赋值运算符无法重载,因此无法在自定义枚举中重复此行为。它在某种程度上是一种语法糖:它取代了#34;取代了#34; 1 .Some(1) nil.None CalendarPickerView,但它是一个神奇的&#34;语法糖确实。