Junior
Ce sunt opționale și ce rol joacă în limbajul Swift?
sobes.tech AI
Răspuns de la AI
Opțional în Swift este un tip care poate conține o valoare sau nu (poate fi nil).
Rolul opționalelor:
- Gestionarea absenței valorilor (siguranță nil).
- Prevenirea erorilor de acces la nil în timpul execuției (crash-uri).
- Definirea clară în cod a locurilor unde poate lipsi o valoare.
Concepte principale:
- Declararea unui opțional:
ValueType?sauOptional<ValueType> - Atribuirea lui nil: unui opțional i se poate atribui
nil. - Dezambalare forțată (
!): extrage valoarea dacă există, altfel provoacă o eroare fatală. - Legarea opțională (
if let,guard let): extrage în mod sigur valoarea dacă nu estenil, creând o constantă sau variabilă temporară. - Lanțul opțional (
?.): permite apelarea sigură a metodelor, accesarea proprietăților sau indexarea unui opțional. - Operatorul de coalescență cu nil (
??): oferă o valoare implicită dacă opționalul estenil.
Exemple de utilizare:
// Declararea unui Int opțional
var age: Int?
// Atribuirea unei valori
age = 30
// Dezambalare forțată (nesigur dacă age == nil)
// let unwrappedAge = age!
// Legare opțională cu if let
if let currentAge = age {
print("Vârsta: \(currentAge)") // Se execută dacă age nu este nil
} else {
print("Vârsta necunoscută") // Se execută dacă age este nil
}
// Lanț opțional
struct Person {
var name: String
var address: Address?
}
struct Address {
var street: String
}
var person: Person? = Person(name: "Alice", address: Address(street: "Main St"))
// Încercarea de a obține strada prin lanț opțional
let streetName = person?.address?.street // streetName va fi String?
// Operatorul de coalescență cu nil
let displayedStreet = streetName ?? "Stradă necunoscută"
print(displayedStreet) // Va afișa "Main St"