let l1 = Lekarz(imie: "Jan", nazwisko: "Kowalski", specjalnosc: "Dermatolog", dzienPracy: DzienPracy(dzien: .PN, godzinaPocz: .osiem, godzinaKon: .dziewiec))
let l2 = Lekarz(imie: "Adrian", nazwisko: "Nowakowski", specjalnosc: "Endokrynolog", dzienPracy: DzienPracy(dzien: .WT, godzinaPocz: .jedenascie, godzinaKon: .czternascie))
let l3 = Lekarz(imie: "Hubert", nazwisko: "Zieliński", specjalnosc: "Logopeda", dzienPracy: DzienPracy(dzien: .PT, godzinaPocz: .pietnascie, godzinaKon: .szesnascie))
let lekarze = [l1, l2, l3]
当我尝试声明一个数组时,我得到一个像这样的错误"不能使用实例成员' l1'在属性初始化器内;属性初始化程序在“自我”之前运行可用"。
答案 0 :(得分:1)
正如错误消息所提到的,在完成类创建之前,一个实例变量无法引用另一个实例变量。
对于您的情况,如果Lakarz
是struct
,则l1
,l2
和l3
的值在编译时是固定的。解决方法是将l1
,l2
和l3
声明为static
,以便他们不是实例成员:
class Foo {
static let l1 = Lekarz(imie: "Jan", nazwisko: "Kowalski", specjalnosc: "Dermatolog", dzienPracy: DzienPracy(dzien: .PN, godzinaPocz: .osiem, godzinaKon: .dziewiec))
static let l2 = Lekarz(imie: "Adrian", nazwisko: "Nowakowski", specjalnosc: "Endokrynolog", dzienPracy: DzienPracy(dzien: .WT, godzinaPocz: .jedenascie, godzinaKon: .czternascie))
static let l3 = Lekarz(imie: "Hubert", nazwisko: "Zieliński", specjalnosc: "Logopeda", dzienPracy: DzienPracy(dzien: .PT, godzinaPocz: .pietnascie, godzinaKon: .szesnascie))
let lekarze = [Foo.l1, Foo.l2, Foo.l3]
}