在 willSet 观察者中计算后未更新结构中的 属性

A property in a struct not being updated after being computed in willSet observer

如果我的问题被认为是愚蠢的,请提前道歉,我目前正在学习 属性 观察者并且我已经从一个很棒的 swift 在线教程中获得了一个例子来确定代码是否正确是有效的,我正确地假设它是有效的,并决定在 Swift 操场上实施它。我不明白为什么 isMillionaire 属性 尽管 if 语句的计算结果为真,但仍然为假。

struct BankAccount{
var name: String
var isMillionaire = false
var balance: Int {
    didSet {
        if balance > 1_000_000 {
            isMillionaire = true
        } else {
            isMillionaire = false
        }
    }
  }
}

var bankUser1 = BankAccount(name: "John Appleseed", balance: 2_000_000)
print(bankUser1.isMillionaire) //Returns false

属性 观察者不会在初始化时调用,只有在之后设置值时才会调用,这就是 didSet 没有被执行的原因。

在这种特定情况下,由于 isMillionaire 完全派生自 balance 并且不能直接更新,我建议使用计算的 属性,因此它看起来像这样:

var isMillionaire: Bool {
  return balance > 1_000_000
}