swift-基礎07-if語句,強制解析與可選綁定和nil

    let number = "123"

//    let number = "hello"

    let convertNumerber = Int(number)

    

    if (convertNumerber != nil) {

    

      print("convertNumber is \(convertNumerber!)")

    

    } else {

      

      print("convertNumber is \(convertNumerber)" )

      

    }

    如果你確定可選包含一個值,你可以在名稱後面加驚歎號 ! 訪問可選的值。

    驚歎號 ! 表示:這個可選有值,請使用它。” 

    使用!表示把這個可變類型降級爲不可變類型

    這就是所謂的 強制解析(forced unwrapping)可選的值

    也叫拆包

    可空類型的精度(取值範圍)大於不可控類型,所以拆包又叫強制解析

    

    如果用 ! 來獲取一個可選值可能會導致運行時錯誤。所以,

    使用 ! 來強制解析值之前,一定要確定可選包含一個非 nil 的值(if判斷一下)

   

    可選綁定(optional binding)用來判斷可選是否包含值,

    如果包含就把值賦給一個臨時常量或者變量。

    可選綁定一般用在 if while 語句中,

    對可選的值進行判斷並把值賦給一個常量或者變量,例子如下

    

//    let number1 = "123"

    let number1 = "hello"

    

    if let convertNumerber1 = Int(number1) {

      

      print("convertNumber1 is \(convertNumerber1)")

      

    } else {

      

      print("convertNumber1 is nil ")

      

    }

    以上代碼表示:如果 Int(number1) 返回的可選 Int 包含一個值,

    創建常量 convertNumerber1,並將可選包含的值賦給它。

    如果轉換成功,convertNumerber1 常量可以在 if 語句的第一個分支中使用。

    convertNumerber1已經被初始化,所以不需要再使用 ! 獲取它的值。

    在這個例子中,convertNumerber1用來輸出轉換結果。

    

    你可以在可選綁定中使用常量和變量。

   

    通過給可選的變量賦值給nil來表示他們沒有值

    

    var serverResponseCode :Int? = 404

    

    print(serverResponseCode)

    

    serverResponseCode = nil

    

    print(serverResponseCode)

    

    var myBananaCount:Int?

    

    print(myBananaCount)

   

    var myAppleCount = 3

    myAppleCount = nil

    但是nil不能用於非可選的常量或者變量。

    如果代碼中有常量或者變量需要處理值缺失的情況,把他們聲明稱對應的可選類型

    

    如果一個可選的常量或者變量沒有提供默認值,他們會被自動設置爲nil

    

    Swift nil Objective-C nil 並不一樣。

    Objective-C 中,nil 是一個指向不存在對象的指針

    Swift 中,nil 不是指針,它是一個確定的值,用來表示值的缺失。

    任何類型的可選都可以被設置爲 nil,不只是對象類型。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章