簡體   English   中英

在 willSet 觀察者中計算后未更新結構中的屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM