无法声明数组

时间:2017-08-02 11:39:47

标签: arrays swift

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

1 个答案:

答案 0 :(得分:1)

正如错误消息所提到的,在完成类创建之前,一个实例变量无法引用另一个实例变量。

对于您的情况,如果Lakarzstruct,则l1l2l3的值在编译时是固定的。解决方法是将l1l2l3声明为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]
}