關(guān)于wrap的問題
let name = Optional.some("daniel")
這時(shí)候的name是String? 也就是說這個(gè)name是屬于Optional的枚舉類型的
如果一解包個(gè)String?的值 解包出來是nil 就是說這個(gè)值是屬于Optional里面的.none類型 而他不是屬于Optional里面的.some類型?
let name = Optional.some("daniel")
這時(shí)候的name是String? 也就是說這個(gè)name是屬于Optional的枚舉類型的
如果一解包個(gè)String?的值 解包出來是nil 就是說這個(gè)值是屬于Optional里面的.none類型 而他不是屬于Optional里面的.some類型?
2019-01-13
舉報(bào)
2019-01-22
先上代碼:
var name = Optional.some("daniel")
??? ? name? = Optional.none
首先:對題主提問中對表表述做一點(diǎn)點(diǎn)更正。也許更正了這個(gè)也就同時(shí)解決了題主對提問
“就是說這個(gè)值是屬于Optional里面的‘.none類型 ’而他不是屬于Optional里面的‘.some類型 ’?”
其中.‘.none類型 ’不應(yīng)該稱之為一種“類型”,‘.some類型 ’也不應(yīng)該稱之為一種“類型”。它們兩個(gè)都是“Optional類型”這種類型的一個(gè)枚舉值。順便說一下,至于“Optional類型”從源碼看(
public enum Optional<Wrapped> : ExpressibleByNilLiteral
),它是一個(gè)枚舉類型。
另外:
如果一解包個(gè)String?的值 ,得到的結(jié)果是String類型。對nil 進(jìn)行解包,是不會得到nil的。代碼如下。題主可以借助 Xcode 自行看一下相應(yīng)對變量類型
var?str : String? =?nil ?// 等價(jià)于 ?var?str2 : String? = Optional.none
if?let?newStr = str {
? ? print(newStr)
}?else{
//? ? print(newStr) //編譯出錯(cuò)
? ? print("解包失敗")
}