在 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
}
如果我的问题被认为是愚蠢的,请提前道歉,我目前正在学习 属性 观察者并且我已经从一个很棒的 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
}