以下是关于 Swift 可选链的基本信息和使用方法:
可选链访问属性
class Person {
var residence: Residence?
}
class Residence {
var address: Address?
}
class Address {
var street: String = "No Street"
}
let person = Person()
// 使用可选链访问属性
if let street = person.residence?.address?.street {
print("Street: \(street)")
} else {
print("No street information available.")
}
可选链调用方法
class Kitchen {
func cook() {
print("Cooking in progress...")
}
}
class Residence {
var kitchen: Kitchen?
}
let residence = Residence()
// 使用可选链调用方法
residence.kitchen?.cook() // 输出无内容,因为 kitchen 为 nil
可选链调用下标脚本
class School {
var students: [String: Int] = ["Alice": 90, "Bob": 85, "Charlie": 95]
}
class Residence {
var school: School?
}
let residence = Residence()
// 使用可选链调用下标脚本
let aliceScore = residence.school?["Alice"]
print(aliceScore) // 输出 nil,因为 school 为 nil
多层可选链
可选链可以多层嵌套,依次访问多个层级的属性、方法或下标脚本。
class Person {
var residence: Residence?
}
class Residence {
var address: Address?
}
class Address {
var street: String = "No Street"
}
let person = Person()
// 多层可选链访问属性
if let street = person.residence?.address?.street {
print("Street: \(street)")
} else {
print("No street information available.")
}
可选链调用可选方法
如果方法本身返回可选类型,那么可以使用可选链来调用这个方法。
class Calculator {
func divide(a: Int, by b: Int) -> Int? {
guard b != 0 else {
return nil
}
return a / b
}
}
let calculator = Calculator()
// 可选链调用可选方法
if let result = calculator.divide(a: 10, by: 2) {
print("Result: \(result)")
} else {
print("Cannot divide by zero.")
}
以上是一些关于 Swift 可选链的基本用法。可选链提供了一种简洁且安全的方式来处理可能为 nil 的可选类型,避免了繁琐的空值检查。
转载请注明出处:http://www.zyzy.cn/article/detail/14435/Swift