[英]A property in a struct not being updated after being computed in willSet observer
提前抱歉,如果我的问题很愚蠢,我目前正在学习财产观察员,我已经从一个很棒的 swift 在线教程中获得了一个示例,以确定代码是否有效,我正确地假设它是并决定实施它在 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
初始化时不会调用属性观察器,只有在此之后设置值时,这就是不执行didSet
的原因。
在这种特定情况下,由于isMillionaire
完全来自balance
并且不能直接更新,我建议使用计算属性,因此它看起来像这样:
var isMillionaire: Bool {
return balance > 1_000_000
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.