關(guān)情紙尾--- swift-可選值(optionals)

1.可選類型(optionals)

*來處理值可能缺失的情況。
C 和 Objective-C 中并沒有可選類型這個概念。
最接近的是 Objective-C 中的一個特性,
一個方法要不返回一個對象要不返回nil,nil
表示“缺少一個合法的對象”

2.可選值: optionals

****有兩種狀態(tài)****: 
1.有值
2.沒有值, 沒有值就是nil

?表示兩種狀態(tài):
一種是有值(有具體的某個值)
一種是沒有值(沒有代表為nil)
當(dāng)為?修飾時,表明這個變量有可能為nil

有值
var optValue: Int? = 9

沒有值
var optValue: Int?
var optValue: Int? = nil
2.1可選值可以利用**if****語句來進行判斷
var optValue: Int? = 10
if optValue != nil
{
  print("有值:\(optValue)")
}else {
  print("沒有值:\(optValue)")
}
輸出結(jié)果:有值:Optional(10)


var optValue: Int?
if optValue != nil
{
  print("有值:\(optValue)")
} else {
  print("沒有值:\(optValue)")
}
輸出結(jié)果: 沒有值:nil


var optValue: Int?  = nil
if optValue != nil
{
  print("有值:\(optValue)")
}else {
  print("沒有值:\(optValue)")
}

輸出結(jié)果: 沒有值:nil

3.提取可選類型的值(使用!****強制解析****)

將optValue中的整型值強制拿出來賦值給變量result,
換句話說就是告訴編譯器optValue一定有值
因為可選類型有兩種狀態(tài)有值和沒有值, 所以需要告訴編譯器到底有沒有值
需要注意的是如果強制解析optValue
但是optValue中沒有值時會引發(fā)一個運行時錯誤
var optValue: Int? = 9
var result: Int = optValue!
print(result)
輸出結(jié)果:9

var optValue6: Int?var result2: Int = optValue6!
print(result2)
結(jié)果為報錯:
fatal error:
unexpectedly found nil while unwrapping an Optional value

4.可選綁定###

為了更安全的解析可選類型的值, 一般情況下使用可選綁定
如果optValue沒有值就不會做任何操作
如果optValue有值會返回true并將optValue的值賦值給result執(zhí)行大括號中的內(nèi)容
var optValue: Int? = 9
if let result = optValue
{
    print(result)
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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