Junior
Swift тилинде опционалдарды иштетүүнүн кандай жолдору бар?
sobes.tech AI
AIден жооп
-
Мажбурий ачуу:
// ! колдонулат, эгер сиз опционалдын мааниси бар экенине ишенсеңиз. let optionalValue: String? = "hello" let unwrappedValue = optionalValue! // Коркунучтуу, эгер мааниси nil болсо, краш болот -
Опционал байлоо (if let, guard let):
// if let - эгер опционал nil эмес болсо, блокду иштетет. if let value = optionalValue { print(value) } // guard let - эрте чыгуу үчүн колдонулат, эгер опционал nil болсо. func processValue(_ value: String?) { guard let unwrappedValue = value else { print("Мааниси nil") return } print(unwrappedValue) } -
Опционал чынжырлоо (Optional Chaining):
// Коопсуз түрдө методдорду, мүчөлөрдү же сабскрипттерди чакыруу. struct Company { var address: Address? } struct Address { var street: String? } let company: Company? = Company(address: Address(street: "Main Street")) let street = company?.address?.street // Натыйжа опционал String? -
Нол-коалесцинг оператору (??):
// Эгер опционал nil болсо, алдын ала маанини берет. let name: String? = nil let displayName = name ?? "Anonymous" // Эгер name nil болсо, displayName "Anonymous" болот -
Илгери мажбурланган опционалдар:
// Типден кийин ! көрүнөт. Компилятор ачык распаковка талап кылбайт, бирок nil болсо, краш болушу мүмкүн. let implicitlyUnwrappedString: String! = "this is a string" print(implicitlyUnwrappedString.count) // ! талап кылынбайт -
if case letменен паттерн таануу:// Жогорку деңгээлдүү ыкма, enum менен ассоциативдүү маанилер жана опционалдар менен иштөөдө. enum Result { case success(String) case failure } let result: Result? = .success("Operation completed") if case let .success(message)? = result { print("Ийгиликтүү: \(message)") }