Junior
Kas yra galimi ir kokią vaidmenį jie atlieka Swift kalboje?
sobes.tech AI
Atsakymas iš AI
Swift kalboje optional yra tipas, kuris gali turėti reikšmę arba jos neturėti (būti nil).
Optionalų vaidmuo:
- Reikšmių nebuvimo tvarkymas (nil-saugumas).
- Klaidos išvengimas prieigos prie nil vykdymo metu (crash'ai).
- Aiškus apibrėžimas kode, kur reikšmė gali būti nebūtina.
Pagrindinės sąvokos:
- Optionalo deklaravimas:
ValueType?arbaOptional<ValueType> - Nil priskyrimas: optionalui galima priskirti
nil. - Priverstinis išskleidimas (
!): ištraukia reikšmę, jei ji yra, kitaip sukelia kritinę klaidą. - Optionalo pririšimas (
if let,guard let): saugiai ištraukia reikšmę, jei ji nėranil, sukuria laikiną konstantą arba kintamąjį. - Optionalo grandinė (
?.): leidžia saugiai iškviesti metodus, gauti savybes arba pasiekti indeksus optionalo. - Nil jungimo operatorius (
??): suteikia numatytąją reikšmę, jei optionalas yranil.
Naudojimo pavyzdžiai:
// Optionalo Int deklaravimas
var age: Int?
// Reikšmės priskyrimas
age = 30
// Priverstinis išskleidimas (nesaugus, jei age == nil)
// let unwrappedAge = age!
// Optionalo pririšimas su if let
if let currentAge = age {
print("Amžius: \(currentAge)") // įvykdys, jei age nėra nil
} else {
print("Amžius nežinomas") // įvykdys, jei age yra nil
}
// Optionalo grandinė
struct Person {
var name: String
var address: Address?
}
struct Address {
var street: String
}
var person: Person? = Person(name: "Alice", address: Address(street: "Main St"))
// Bandymas gauti gatvę per optionalo grandinę
let streetName = person?.address?.street // streetName bus String?
// Nil jungimo operatorius
let displayedStreet = streetName ?? "Nežinoma gatvė"
print(displayedStreet) // Išves "Main St"