0

如果我的问题很愚蠢,请提前抱歉,我目前正在学习财产观察员,并且我已经从一个很棒的在线快速教程中获得了一个示例,以确定代码是否有效,我正确地假设它是并决定实现它在 Swift 游乐场。我不明白为什么尽管 if 语句评估为 true,但isMillionaire属性仍然为 false。

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
4

1 回答 1

4

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

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

var isMillionaire: Bool {
  return balance > 1_000_000
}
于 2020-06-27T11:54:14.447 回答