/*
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命令打印出未加工時的信息
*/