Sobes.tech
Junior — Middle

Ի՞նչ տեսակների կոնստրուկտորներ են իրականացվում դասում և ինչո՞վ են նրանք տարբերվում:

sobes.tech AI

Պատասխան AI-ից

Swift դասի մեջ սովորաբար իրականացվում են հետևյալ տեսակի կոնստրուկտորներ (սկիզբնականներ).

  1. Նախնական ինիցիալիզատոր (default initializer) — ավտոմատ ստեղծվում է, եթե բոլոր հատկությունները ունեն նախնական արժեքներ և այլ ինիցիալիզատորներ չկան։

  2. Պարամետրերով ինիցիալիզատոր (designated initializer) — հիմնական ինիցիալիզատոր, որը ինիցիալիզացնում է բոլոր դասի հատկությունները։ Այլ ինիցիալիզատորների կանչը կատարվում է self.init-ի միջոցով։

  3. Հարմար ինիցիալիզատորներ (convenience initializer) — օժանդակ ինիցիալիզատորներ, որոնք կանչում են հիմնական ինիցիալիզատորը։ Օգտագործվում են տարբեր պարամետրային հավաքածուներով օբյեկտներ ստեղծելու համար։

Տարբերություններ՝

  • Designated ինիցիալիզատորները ինիցիալիզացնում են բոլոր հատկությունները և կանչում են սուպեր դասի ինիցիալիզատորները։
  • Convenience ինիցիալիզատորները կանչում են նույն դասի այլ ինիցիալիզատորներ և չեն կարող ուղղակի ինիցիալիզացնել հատկությունները։

Օրինակ՝

class Person {
    var name: String
    var age: Int

    // Designated ինիցիալիզատոր
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }

    // Convenience ինիցիալիզատոր
    convenience init(name: String) {
        self.init(name: name, age: 0) // կանչ է հիմնականին
    }
}

Այսպիսով՝ կոնստրուկտորները ապահովում են ճկունություն օբյեկտների տարբեր պարամետրերով ինիցիալիզացման համար և երաշխավորում են բոլոր հատկությունների ճիշտ ինիցիալիզացիան։