-
前言:
- 在基礎類型中,我們知道有一種可選類型
Optional
,該類型有兩種可能.一為nil,二為它標志的類型.寫法為:var/let name:type?/!
- 我們使用
?
或!
來表示這是一個可選的類型,!
表示該參數不需要強制解析,而?
需要. - 在該變量或常量后添加
!
來強制解析,如果為nil,會引起編譯錯誤,避免這個錯誤,我們使用可選鏈
- 在基礎類型中,我們知道有一種可選類型
-
可選鏈:
用于處理可選類型的屬性,方法和下標,可以代替強制解析.也可以調用方法與下標.使用?
來調起可選鏈,它會自己判斷訪問的實例是否為nil
-
調用屬性
-
調用方法
-
調用下標
-
多級調用
class Person {
var school : School?
}
class School {
var name = ""
var grade:Grade?
func log() {
print("haha")
}
subscript(str:String) ->String {
return str+"!"
}
}
class Grade {
var age = 0
}
var person = Person()
//person.school!.name
person.school?.name
person.school?.log()
person.school?["asd"]
var school = School()
school.name = "asd"
//多級調用
person.school = school
print(person.school?.name ?? "none value")
person.school?.grade?.age
//方法返回可選值
person.school?.name = ""
if var str = person.school?.schoolName() {
print(str)
}else {
print("沒有名稱")
}
```