swift属性初始化程序在'self'可用之前运行

问题描述 投票:-1回答:1

我有以下两个类别的项目和项目:

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';属性初始化程序在“自我”可用之前运行

为什么?

swift function constructor init
1个回答
0
投票

这里已经有很好的解释: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)
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.