1默伍,as ?:把一個不確定存在的類型轉成可選類型
- 當取值時,如果結果不確定是否存在(比如通過一個鍵值從字典中取值)衰琐,可以用as ?把結果轉換成可選類型也糊,然后使用結果的時候解包使用,結果不存在羡宙,也不會崩潰狸剃,而是把結果賦值nil
- 字典取值默認就是使用了as ?進行了結果轉換成可選類型
let dict:[String : Any] = ["name":"zhang","age":20,"num":200]
let name01 = dict["aaa"] //字典取值默認是使用了as?轉換的,所以這里可以簡單的寫成dict["aaa"]
print(name01 ?? "沒有結果")
2狗热,*as ! *:把一個可選類型轉換成固定類型
- 當取值時钞馁, 如果結果確定是存在的(比如通過一個鍵值從字典中取值)虑省,可以直接賦值一個確定類型,如果是一個系統(tǒng)默認的可選類型僧凰,也可以通過as !強制解包賦值確定類型探颈,如下:
- 如果一個確定類型被系統(tǒng)指定成了可選類型,每次使用都要解包训措,比較麻煩伪节,所以我們可以在取值的時候一次性進行解包,之后使用可以直接使用:
let dict:[String : Any] = ["name":"zhang","age":20,"num":200]
let name01 = dict["age"] //
print(name01)
//打印結果是可選類型哦绩鸣,Optional(20)怀大,所以每次使用這個值的時候都需要解包,如果我們確定這個值是某一固定類型呀闻,可以直接在取值的時候用as!進行強制解包
let dict:[String : Any] = ["name":"zhang","age":20,"num":200]
let name01 = dict["age"] as! Int
print(name01)//打印結果是20
3化借,?? <#default value#>:把一個可選類型進行高級可選綁定解包
- 當一個可選類型不存在時候,賦值default value
- 當一個可選類型存在的時候总珠,進行解包
let dict:[String : Any] = ["name":"zhang","age":20,"num":200]
let name01 = dict["bbb"]
print(name01 ?? "結果不存在")//打印結果是“結果不存在”
4, optional("xxxxx"):可選類型的包裝屏鳍,一般沒什么實際用途
5 勘纯,可選綁定:把一個可選類型理性解包
- 當一個結果是可選類型的時候局服,因為有包裝optional("xxxxx"),所以是不能直接使用的驳遵,所以可以通過可選綁定進行正確解包后使用‘
- 如果結果有值,則賦值
- 如果結果沒值唆迁,則直接返回竞穷,不做任何操作,而?? <#default value#>在結果無值的時候還會賦值一個默認值鼠哥,所以說是可選綁定的高級操作
let dict:[String : Any] = ["name":"zhang","age":20,"num":200]
let name01 = dict["name"]
if let name01 = name01 {
print(name01)//打印結果是“zhang”
}
let dict:[String : Any] = ["name":"zhang","age":20,"num":200]
let name01 = dict["dddd"]
if let name01 = name01 {
print(name01)//沒有打印看政,不做任何操作
}
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者