可选链与 nil 安全
?. 可选链访问、返回值自动包装为可选、赋值/方法调用链
可选链与 nil 安全
?. 可选链让你在一行中安全访问深层嵌套的属性——任何一个环节为 nil 都会短路返回 nil。
学完本章你将: 掌握 ?. 可选链访问、自动包装、链式赋值。
可选链访问
swift
class Person {
var residence: Residence?
}
class Residence {
var address: Address?
}
class Address {
var street: String
init(street: String) { self.street = street }
}
let person = Person()
// ❌ 多层 if let
if let residence = person.residence {
if let address = residence.address {
print(address.street)
}
}
// ✅ 可选链
if let street = person.residence?.address?.street {
print(street)
}
// 任何一个环节为 nil——整个返回 nil
// 配合 ??
let street = person.residence?.address?.street ?? "未知地址"
可选链赋值
swift
// 只有链上所有值都存在时才赋值
person.residence?.address?.street = "长安街"
// residence 是 nil——赋值不执行,但也不报错
方法调用的可选链
swift
// 如果方法不存在,整个调用返回 nil
let success = person.residence?.doSomething()
// success 类型是 Bool?——residence 为 nil 时返回 nil