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