[對比OC學習swift]--day04可選類型

注意:swift中不能隨意給一個對象賦值為nil。

在OC中我們可以給一個對象類型變量賦值為nil或者是一個對象;而在swift中如果想給一個變量賦值為nil,那么必須明確指定為可選類型才可以,也就是說普通變量是不能賦值為nil 的。

可選類型

如何定義一個可選類型:
Swfit語言定義后綴?作為命名類型Optional的簡寫,換句話說,以下兩種聲明是相等的:

var optionalInteger: Int?
var optionalInteger: Optional<Int>

注意:swift中的可選類型的值是不能直接進行使用的。
使用前,要進行以下任意一種方式進行處理。

1.強制解包

怎么進行強制解包:變量名稱 + !

let number1 : Int? = 10
let number2 : Int = 20
let sum = number1! + number2

弊端:如果這個可選類型為nil,我們進行強制解包,那么就會報錯。

2.if(可選綁定)

為了解決強制解包的弊端,我們可以使用可選綁定來解決。

var str1 : String? = "yishenglei"
if let aaa = str1      // 如果str1值為nil,表示條件不成立,就不會來到大括號中
{
        print(str1)
}

弊端:嵌套太嚴重

let v1 : Int? = 10
let v2 : Int? = 20
let v3 : Int? = 30
if let n1 = v1
{
    if let n2 = v2
    {
        if let n3 = v3
        {
            let sum0 = n1 + n2 + n3
        }

    }

}

3.guard(守護者)

  • 作用:類似可選綁定
  • 只有條件為假,才會執行else后面的大括中的代碼。
    let v1 : Int? = 10
    let v2 : Int? = 20
    let v3 : Int? = 30
func test01()
    {
        guard let m1 = v1 else
        {
            print("v1沒有值")
            return
        }
        guard let m2 = v2 else
        {
            print("v2沒有值")
            return
        }
        guard let m3 = v3 else
        {
            print("v3沒有值")
            return
        }

        print(m1 + m2 + m3)     // 能執行這一步,說明v1,v2,v3都不為空
    }
    test01()
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容