Sobes.tech
Middle

Como adicionar o seu próprio inicializador a uma estrutura, deixando o inicializador padrão?

sobes.tech IA

Resposta da IA

Por padrão, as estruturas em Swift recebem um inicializador automático de membro se não definirem nenhum inicializador próprio. Se adicionar qualquer inicializador, o inicializador automático de membro não será fornecido.

Para manter o inicializador automático de membro ao adicionar seus próprios inicializadores, pode colocá-los numa extensão. Os inicializadores definidos na extensão não anulam o inicializador automático.

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

extension Person {
    // Seu inicializador
    init(name: String) {
        self.name = name
        self.age = 0 // Valor padrão
    }
}

// Uso do inicializador automático
let john = Person(name: "John", age: 30)

// Uso do seu inicializador na extensão
let jane = Person(name: "Jane")

print(john)
print(jane)