多重 Optional

/*

Optional

我們使用類型后面加上?的語法只不過是Optional類型的語法糖,而實際這個類型是一個enum:

*/

publicenumOptional :ExpressibleByNilLiteral{

/// The absence of a value.

///

/// In code, the absence of a value is typically written using the `nil`

/// literal rather than the explicit `.none` enumeration case.

casenone

/// The presence of a value, stored as `Wrapped`.

casesome(Wrapped)

// ...

}

/*

在Optional中沒有對Wrapped進行任何限制,可以是任何類型(String, Int,另一個Optional)

*/

varstring:String? ="string"http://類型String?

varanotherString:String?? =string//類型String??

varaNil:String? =nil

varanotherNil:String?? =aNil//一個大盒子中裝有一個小盒子,小盒子里面為空

varliteralNil:String?? =nil//盒子里面為空

ifleta =anotherNil{

print("anotherNil")//這里輸出

}

ifletb =literalNil{

print("literalNil")//這里不會輸出

}

ifanotherNil==nil{

print("--- anotherNil")//這里不會輸出

}

ifliteralNil==nil{

print("--- literalNil")//這里會輸出

}

/*

但是通過lldb打印po的時候,都會顯示為nil

可以說使用fr v -R命令打印出未加工時的信息

*/


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容