Junior
Koji su načini obrade opcionalnih u jeziku Swift?
sobes.tech АИ
Одговор од АИ
-
Prisilno raspakivanje:
// Koristi se !, ako ste sigurni da opcional sadrži vrednost. let optionalValue: String? = "zdravo" let unwrappedValue = optionalValue! // Opasno, može izazvati pad ako je vrednost nil -
Opcionalno vezivanje (if let, guard let):
// if let - izvršava blok koda ako opcional nije nil. if let value = optionalValue { print(value) } // guard let - koristi se za rano izlazak iz funkcije ili bloka ako je opcional nil. func processValue(_ value: String?) { guard let unwrappedValue = value else { print("Vrednost je nil") return } print(unwrappedValue) } -
Lančano povezivanje opcionalnih (Optional Chaining):
// Omogućava sigurno pozivanje metoda, svojstava ili subskripta na opcionalnim vrednostima. struct Company { var address: Address? } struct Address { var street: String? } let company: Company? = Company(address: Address(street: "Main Street")) let street = company?.address?.street // Rezultat će biti opcionalni String? -
Operator spajanja null (??):
// Pruža podrazumevanu vrednost ako je opcional nil. let name: String? = nil let displayName = name ?? "Nepoznato" // Ako je name nil, displayName će biti "Nepoznato" -
Implicitno razpakovani opcionalni:
// Otkriva se sa ! nakon tipa. Kompajler ne zahteva eksplicitno razpakivanje, ali može izazvati pad ako je nil. let implicitlyUnwrappedString: String! = "ovo je string" print(implicitlyUnwrappedString.count) // Ne zahteva ! za pristup članovima -
Korišćenje
if case letsa uzorkom poklapanja:// Napredniji način za proveru enum sa povezanim vrednostima, uključujući opcionalne. enum Result { case success(String) case failure } let result: Result? = .success("Operacija završena") if case let .success(message)? = result { print("Uspeh sa porukom: \(message)") }