Swift willSet/didSet 赋值?

Swift willSet/didSet assignment?

我想使用 didSet/willSet API 来观察 class 中几个属性的变化。但是我想保持我的属性声明部分干净,所以我想有单独的函数来实现这个逻辑。

现在我有这样的东西:

var myProperty: SomeType {
    didSet {
        handleDidSetMyProperty()
    }
}

然而这会占用 5 行,如果你有更多这样的属性,这会是相当多的。如果我可以将其限制为 3 就好了,例如:

var myProperty: SomeType {
    didSet = handleDidSetMyProperty
}

在 Swift 中有没有办法将 function/closure 分配给 属性 观察者?

不,你不能。请参阅 Swift 中的 Declarations 编程语言。

在“变量声明的语法”中,您会发现

didSet-clause → attributes­opt ­didSet­ setter-name­­opt ­­code-block­

和“代码块的语法”

code-block → {­ statements­opt

didSet 关键字后面只能跟一个代码块(带有 强制花括号)。