亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于wrap的問題


let name = Optional.some("daniel")

這時候的name是String? 也就是說這個name是屬于Optional的枚舉類型的

如果一解包個String?的值 解包出來是nil 就是說這個值是屬于Optional里面的.none類型 而他不是屬于Optional里面的.some類型?


正在回答

1 回答

先上代碼:

var name = Optional.some("daniel")

??? ? name? = Optional.none

首先:對題主提問中對表表述做一點點更正。也許更正了這個也就同時解決了題主對提問

“就是說這個值是屬于Optional里面的‘.none類型 ’而他不是屬于Optional里面的‘.some類型 ’?”

其中.‘.none類型 ’不應該稱之為一種“類型”,‘.some類型 ’也不應該稱之為一種“類型”。它們兩個都是“Optional類型”這種類型的一個枚舉值。順便說一下,至于“Optional類型”從源碼看(

public enum Optional<Wrapped> : ExpressibleByNilLiteral

),它是一個枚舉類型。


另外:

如果一解包個String?的值 ,得到的結果是String類型。對nil 進行解包,是不會得到nil的。代碼如下。題主可以借助 Xcode 自行看一下相應對變量類型

var?str : String? =?nil ?// 等價于 ?var?str2 : String? = Optional.none

if?let?newStr = str {

? ? print(newStr)

}?else{

//? ? print(newStr) //編譯出錯

? ? print("解包失敗")

}


1 回復 有任何疑惑可以回復我~
#1

梁華建 提問者

對 是枚舉類型,我還以為現在沒人學Swift了 沒看到什么人問答哈哈
2019-01-30 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

關于wrap的問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號