Swift學習(十九): 可選項本質(多重可選項本質)

可選項的本質

  • 可選項的本質是enum類型

 這是底層可選項的代碼,可以看出本質是enum

var age: Int? = 10 

等價於以下四種:

var age0: Optional<Int> = Optional<Int>.some(10)
var age1: Optional = .some(10)
var age2 = Optional.some(10)
var age3 = Optional(10)
var age: Int? = nil

等價於以下四種:

var age = nil
var age3 = .none
var age0 = Optional<Int>.none
var age1: Optional<Int> = .none

switch舉例:

var age: Int? = .none
age = 10
age = .some(20)
age = nil

switch age {
    //必須帶?纔會對age自動解包並賦值給v
case let v?:
    print("some", v)
case nil:
    print("none")
}

也可以寫成:
if let v = age {
    print("some", v)
} else {
    print("none")
}

還可以寫成:
switch age {
case let .some(v):
    print("some", v)
case .none:
    print("none")
}

多重可選項的本質

var age_: Int? = 10
var age: Int?? = age_
age = nil

上面的可以寫成如下兩種形式:
var age0 = Optional.some(Optional.some(10))
age0 = .none
var age1: Optional<Optional> = .some(.some(10))
age1 = .none
var age: Int?? = 10
可以寫成:
var age0: Optional<Optional> = 10

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章