0
我想創建可選的數組,但我想只在將元素添加到之前進行初始化。在willSet中的懶惰初始化問題
所以我寫了:
var names: [String]? {
willSet {
if names == nil {
names = []
}
}
}
但我得到這個錯誤:如果你想要一個懶惰吧,那麼你應該做這樣
Attempting to store to property 'names' within its own willSet, which is about to be overwritten by the new value
我我不確定你的目標是什麼。但它看起來像你不希望可選數組永遠是零...所以爲什麼不使它不可選? – Fogmeister
@Fogmeister我只想在初始化數組時使用它,它是可選的,因爲它有可能不會在程序中被初始化爲 – ULAQ
而不管你想要做什麼,並且只關心錯誤消息:問自己:**當**發生這種錯誤時?當你試圖將'names'的新值設置爲到'[「約翰」,「傑克」] ...... ......事件的順序是怎樣的?該序列將是一個*嘗試* o設置爲'[]',它總是會被覆蓋爲[「John」,「Jack」],因爲您將它寫入'willSet' ...意味着它會在它被設置之前發生。 – Honey