我有以下两个类别的项目和项目:
class Item{
var name: String
init(name: String) {
self.name = name
}
}
class Items{
init(item: Item?) {
self.item = item
}
var item: Item?
}
然后我尝试做:
var item1 = Item(name: "xxx")
var items1 : Items = Items(item: item1)
我在第二个var处出错:无法在属性初始化程序中使用实例成员'item1';属性初始化程序在“自我”可用之前运行
为什么?
这里已经有很好的解释:Property initializers run before 'self' is available
但是您不能在类或结构的顶层初始化彼此依赖的属性。
struct dummy {
let item1: Item
lazy var items1 : Items = Items(item: item1)
init(name: String) {
item1 = Item(name: name)
items1 = Items(item: item1)
}
}