swift學習日記-可選鏈(optional chaining)

可選鏈式調用(Optional Chainingwikihtml

 

可選鏈式調用:是一種能夠在當前值可能爲nil的可選值請求和調用屬性、方法或者下標。與Objective-C中向nil發送消息有些相像,可是swift可選鏈式調用能夠做用於任何類型,而且能檢查調用是否成功。swift

 

1 使用可選鏈式調用代替強制展開spa

經過在想調用的屬性、方法或下標的可選值(optional value)後面跟一個?,能夠定義一個可選鏈,與!相似,不一樣之處在於!可能會出發運行時錯誤。htm

class Person {ip

    var name: String?get

}io

 

let person = Person()class

print(person.name?.characters.count// nil請求

print(person.name!.characters.count// 運行時錯誤方法

 

2 爲可選鏈式調用定義模型類型

經過使用可選鏈式調用能夠調用多層屬性、方法和下標。這樣能夠在複雜的模型中向下訪問各類子屬性,而且判斷可否訪問子屬性的屬性、方法或下標。

 

3 經過可選鏈式調用訪問屬性

4 經過可選鏈式調用調用方法

5 經過可選鏈式訪問下標

以下例子 ,存在一個Student類和一個Teacher類

class Student {

    var name: String?

    

    func read() {

        print("read book")

    }

}

 

class Teacher {

    var students: [Student]?

    var numberOfStudent: Int? {

        get {

            return students?.count

        }

    }

    

    subscript (i: Int) -> Student? {

        return self.students?[i]

    }

}

 

let teacher = Teacher()

// 訪問屬性

print("number Of Student: \(teacher.numberOfStudent)")

// 訪問方法

teacher.students?[0].read()

// 訪問下標

print("first Student: \(teacher[0])")

相關文章
相關標籤/搜索