-
前言:
- 在基础类型中,我们知道有一种可选类型
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("没有名称")
}
```
网友评论