2015-03-08 4 views

ответ

12

Инициализация по умолчанию - это все или ничего для Struct. Либо вы определяете значения по умолчанию для всех свойств, и получаете автоматически сгенерированный инициализатор Struct1() плюс инициализатор со всеми свойствами, или вы получаете только инициализатор со всеми свойствами, включая все, которые имеют установленное значение по умолчанию. Вам придется реализовать пользовательский инициализатор.

struct Struct1 { 
    let myLet = "my let" 
    let myLet2: Bool 
    let myLet3: String 

    init(myLet2: Bool, myLet3: String) { 
     self.myLet2 = myLet2 
     self.myLet3 = myLet3 
    } 
} 
+0

I'n не уверен, что я понял, как я получаю 'Struct1()' инициализатору плюс инициализатору со всеми свойствами автоматически? –

0

В быстром 4

struct Struct1 { 
    let myLet: String? 
    let myLet2: Bool 
    let myLet3: String 
    init(myLet: String? = nil, myLet2: Bool, myLet3: String) { 
     self.myLet = myLet 
     self.myLet2 = myLet2 
     self.myLet3 = myLet3 
    } 
} 
+0

Это не относится к Swift 4. Объявление значений по умолчанию в инициализаторах доступно со времен Swift 1.0 – vadian

+0

Просто поставьте замечание, по которому для этого примера написана быстрая версия для ясности – Yllow

Смежные вопросы