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)") }