Sobes.tech
Junior

Mis on valikud ja millist rolli nad Swift keeles mängivad?

sobes.tech AI

Vastus AI-lt

Swiftis on valikuline tüüp, mis võib sisaldada väärtust või mitte (olla nil).

Valikuliste roll:

  • Väärtuste puudumise töötlemine (nil-turvalisus).
  • Viga pääseda nil-ile täitmise ajal (krahhid).
  • Selge määratlus koodis, kus väärtus võib puududa.

Põhikonceptsioonid:

  • Valikulise deklareerimine: ValueType? või Optional<ValueType>
  • Nil-i omistamine: valikulisele võib omistada nil.
  • Sunni avamine (!): võtab väärtuse, kui see on olemas, vastasel juhul põhjustab fataalse vea.
  • Valikulise sidumine (if let, guard let): turvaliselt võtab väärtuse, kui see ei ole nil, luues ajutise konstant või muutuja.
  • Valikulise ahela (?.): võimaldab turvaliselt kutsuda meetodeid, saada omadusi või viidata indeksitele valikulisel.
  • Nil-i ühendusoperaator (??): pakub vaikimisi väärtust, kui valikuline on nil.

Kasutusnäited:

// Valikulise Int deklareerimine
var age: Int?

// Väärtuse omistamine
age = 30

// Sunni avamine (`!`) (pole turvaline, kui age == nil)
// let unwrappedAge = age!

// Valikulise sidumine with if let
if let currentAge = age {
    print("Vanus: \(currentAge)") // Täidetakse, kui age ei ole nil
} else {
    print("Vanus on teadmata") // Täidetakse, kui age on nil
}

// Valikulise ahela
struct Person {
    var name: String
    var address: Address?
}

struct Address {
    var street: String
}

var person: Person? = Person(name: "Alice", address: Address(street: "Main St"))

// Katse saada tänava nime valikulise ahela kaudu
let streetName = person?.address?.street // streetName on String?

// Nil-i ühendusoperaator
let displayedStreet = streetName ?? "Teadmata tänav"
print(displayedStreet) // Kuvab "Main St"