Junior
Swift tilida opsionallarni qanday ishlash mumkin?
sobes.tech AI
AIdan javob
-
Majburiy Unwrapping:
// Agar optional qiymatning qiymatga ega ekanligiga ishonch hosil qilsangiz, ! ishlatiladi. let optionalValue: String? = "salom" let unwrappedValue = optionalValue! // Xatolik xavfi, agar qiymat nil bo'lsa, crash bo'lishi mumkin -
Optional Binding (if let, guard let):
// if let - optional nil bo'lmagan taqdirda blokni bajaradi. if let value = optionalValue { print(value) } // guard let - funksiyadan yoki blokdan erta chiqish uchun ishlatiladi, agar optional nil bo'lsa. func processValue(_ value: String?) { guard let unwrappedValue = value else { print("Qiymat nil") return } print(unwrappedValue) } -
Optional Chaining:
// Optional qiymatlar ustida metodlar, xususiyatlar yoki subscriptlarni xavfsiz chaqirish imkonini beradi. struct Company { var address: Address? } struct Address { var street: String? } let company: Company? = Company(address: Address(street: "Main Street")) let street = company?.address?.street // Natija optional String? -
Nil-Coalescing Operator (??):
// Optional nil bo'lsa, default qiymat beradi. let name: String? = nil let displayName = name ?? "Nomi yo'q" // Agar name nil bo'lsa, displayName "Nomi yo'q" bo'ladi -
Implicitly Unwrapped Optionals:
// ! bilan aniqlanadi. Kompilyator aniq odamlashni talab qilmaydi, lekin nil bo'lsa crashga olib kelishi mumkin. let implicitlyUnwrappedString: String! = "bu bir satr" print(implicitlyUnwrappedString.count) // ! bilan kirishga hojat yo'q -
if case letbilan pattern matching:// Enumlarni va ularning bog'langan qiymatlarini, shu jumladan optionalarni tekshirish uchun ilg'or usul. enum Result { case success(String) case failure } let result: Result? = .success("Operatsiya yakunlandi") if case let .success(message)? = result { print("Muvaffaqiyat: \(message)") }