Sobes.tech
Junior

Swift dilində opsionaların işlənməsi üçün hansı üsullar mövcuddur?

sobes.tech Süni İntellekt

AI-dan cavab

  1. Məcburi açma:

    // Əgər optional dəyərin məzmununda əmin olsanız, ! istifadə olunur.
    let optionalValue: String? = "salam"
    let unwrappedValue = optionalValue! // Təhlükəli, əgər dəyər nil olarsa, crash baş verə bilər
    
  2. Optional Bağlama (if let, guard let):

    // if let - optional nil olmadıqda blok icra edir.
    if let value = optionalValue {
        print(value)
    }
    
    // guard let - funksiyadan və ya blokdan erkən çıxmaq üçün istifadə olunur, əgər optional nil olarsa.
    func processValue(_ value: String?) {
        guard let unwrappedValue = value else {
            print("Dəyər nil")
            return
        }
        print(unwrappedValue)
    }
    
  3. Optional Zəncirləmə:

    // Optional dəyərlərdə təhlükəsiz şəkildə metodlar, xüsusiyyətlər və ya subscriptlər çağırmağa imkan verir.
    struct Company {
        var address: Address?
    }
    
    struct Address {
        var street: String?
    }
    
    let company: Company? = Company(address: Address(street: "Main Street"))
    let street = company?.address?.street // Nəticə optional String?
    
  4. Nil-Coalescing Operator (??):

    // Əgər optional nil olarsa, default dəyər verir.
    let name: String? = nil
    let displayName = name ?? "Naməlum" // Əgər name nil olarsa, displayName "Naməlum" olacaq
    
  5. İmplicitly Unwrapped Optionals:

    // ! ilə aşkarlanır. Kompilyator açıq açma tələb etmir, amma nil olarsa crash edə bilər.
    let implicitlyUnwrappedString: String! = "bu bir string"
    print(implicitlyUnwrappedString.count) // ! tələb edilmir, üzvlərə giriş üçün
    
  6. if case let ilə pattern uyğunluğu istifadə:

    // Enum-ları və əlaqəli dəyərləri, o cümlədən optional-ları yoxlamaq üçün daha inkişaf etmiş üsul.
    enum Result {
        case success(String)
        case failure
    }
    
    let result: Result? = .success("Əməliyyat tamamlandı")
    
    if case let .success(message)? = result {
        print("Uğur ilə mesaj: \(message)")
    }