Sobes.tech
Junior

Swift dilinde opsiyoneller nasıl işlenir?

sobes.tech yapay zeka

AI'dan gelen yanıt

  1. Zorunlu Açma:

    // Değeri kesin olarak içerdiğinden emin olduğunuzda ! kullanılır.
    let optionalValue: String? = "merhaba"
    let unwrappedValue = optionalValue! // Tehlikeli, değer nil ise çökme olabilir
    
  2. İsteğe Bağlı Bağlama (if let, guard let):

    // if let - optional nil değilse kod bloğunu çalıştırır.
    if let value = optionalValue {
        print(value)
    }
    
    // guard let - optional nil ise fonksiyon veya bloktan erken çıkmak için kullanılır.
    func processValue(_ value: String?) {
        guard let unwrappedValue = value else {
            print("Değer nil")
            return
        }
        print(unwrappedValue)
    }
    
  3. Opsiyonel Zincirleme:

    // Güvenli bir şekilde metodları, özellikleri veya alt dizinleri çağırmaya olanak tanır.
    struct Company {
        var address: Address?
    }
    
    struct Address {
        var street: String?
    }
    
    let company: Company? = Company(address: Address(street: "Main Street"))
    let street = company?.address?.street // Sonuç opsiyonel String?
    
  4. Nil Birleştirme Operatörü (??):

    // Opsiyonel nil ise varsayılan değer sağlar.
    let name: String? = nil
    let displayName = name ?? "Anonim" // name nil ise, displayName "Anonim" olur
    
  5. İmplicitly Unwrapped Optionals:

    // ! ile tespit edilir. Derleyici açıkça açma gerektirmez, ancak nil ise çökme olabilir.
    let implicitlyUnwrappedString: String! = "bu bir string"
    print(implicitlyUnwrappedString.count) // ! gerekmeden üyelere erişim
    
  6. if case let ile desen eşleştirmesi kullanımı:

    // Enum'ları ve ilişkili değerleri, opsiyonalleri de içerecek şekilde kontrol etmek için daha gelişmiş bir yöntem.
    enum Result {
        case success(String)
        case failure
    }
    
    let result: Result? = .success("İşlem tamamlandı")
    
    if case let .success(message)? = result {
        print("Başarılı mesaj: \(message)")
    }