Sobes.tech
Middle

Hogyan lehet saját inicializálót hozzáadni egy szerkezethez, miközben megtartjuk az alapértelmezett inicializálót?

sobes.tech MI

Válasz az MI-től

Alapértelmezés szerint a Swift szerkezetek automatikus tag- inicializálót kapnak, ha nem határozunk meg saját inicializálókat. Ha bármilyen inicializálót hozzáadunk, az automatikus tag- inicializáló nem kerül biztosításra.

Az automatikus tag- inicializáló megőrzéséhez, amikor saját inicializálókat adunk hozzá, azokat egy kiterjesztésbe (extension) helyezhetjük. A kiterjesztésben definiált inicializálók nem szüntetik meg az automatikus tag- inicializálót.

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

extension Person {
    // Saját inicializáló
    init(name: String) {
        self.name = name
        self.age = 0 // Alapértelmezett érték
    }
}

// Az automatikus tag- inicializáló használata
let john = Person(name: "John", age: 30)

// Saját inicializáló használata az extension-ből
let jane = Person(name: "Jane")

print(john)
print(jane)