Назад к вопросам
Middle
80
questionbank

Как можно добавить свой инициализатор в структуру, оставив дефолтный инициализатор?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

По умолчанию структуры в Swift получают автоматический инициализатор члена, если вы не определяете никаких собственных инициализаторов. Если вы добавляете какой-либо инициализатор, автоматический инициализатор члена не предоставляется.

Чтобы сохранить автоматический инициализатор члена при добавлении своих инициализаторов, можно поместить свои инициализаторы в расширение (extension). Инициализаторы, определенные в расширении, не отменяют автоматический инициализатор члена.

struct Person {
    let name: String
    let age: Int
}

extension Person {
    // Свой инициализатор
    init(name: String) {
        self.name = name
        self.age = 0 // Значение по умолчанию
    }
}

// Использование автоматического инициализатора члена
let john = Person(name: "John", age: 30)

// Использование своего инициализатора из расширения
let jane = Person(name: "Jane")

print(john)
print(jane)