# 可选链（Optional Chaining）

URL: https://caijiao.org/swift/10-optionals/03-chaining
Source: docs/swift/10-optionals/03-chaining.md
Description: 本章介绍 Swift 中的可选链（Optional Chaining）用法，帮助开发者简洁安全地访问多层可选值，提高代码可读性。

可选链允许通过一连串可选值调用属性、方法或下标，如果其中任何一个为 nil，整个表达式返回 nil。

## 基本语法

使用 `?` 连接可选类型的属性或方法调用：

```swift
class Person {
    var residence: Residence?
}

class Residence {
    var numberOfRooms = 1
}

let john = Person()
let roomCount = john.residence?.numberOfRooms  // 返回 Int?，结果为 nil
````

## 调用方法

可选链也可用于调用返回值为可选的方法：

```swift
class Residence {
    func printNumberOfRooms() -> Int {
        print("房间数量：\(numberOfRooms)")
        return numberOfRooms
    }
}

john.residence?.printNumberOfRooms()  // 方法不会被调用，返回 nil
```

## 链式调用

可选链支持多层链式访问：

```swift
let address = john.residence?.address?.street
```

如果任意一层为 nil，整个表达式结果为 nil。

## 总结

可选链简化了多层可选值访问的代码，避免了大量的嵌套判断，使代码更简洁安全。
