Sobes.tech
Junior

Swift tilida opsionallarni qanday ishlash mumkin?

sobes.tech AI

AIdan javob

  1. 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
    
  2. 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)
    }
    
  3. 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?
    
  4. 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
    
  5. 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
    
  6. if case let bilan 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)")
    }