# 属性观察器

URL: https://caijiao.org/swift/11-advanced/05-property-observers
Source: docs/swift/11-advanced/05-property-observers.md
Description: 本章介绍 Swift 中属性观察器的用法，帮助开发者监听属性值变化，实现响应式编程。

属性观察器用于监控属性值的变化，执行相应代码。支持 `willSet` 和 `didSet` 两种观察器。

## willSet

属性即将被赋新值时调用，默认参数 `newValue` 表示即将设置的值。

```swift
var score: Int = 0 {
    willSet {
        print("分数即将从 \(score) 改为 \(newValue)")
    }
}
score = 10
````

## didSet

属性值设置完成后调用，默认参数 `oldValue` 表示修改前的值。

```swift
var level: Int = 1 {
    didSet {
        print("等级从 \(oldValue) 提升到 \(level)")
    }
}
level = 2
```

## 注意事项

* 属性观察器不能用于延迟存储属性（`lazy`）。
* 在初始化过程中赋值不会触发观察器。

## 总结

属性观察器是监听和响应属性变化的强大工具，有助于实现数据驱动的逻辑。
