İçeriğe geç

Swift Optional

1. ? (Optional – İsteğe Bağlı Değer)

Bir değişkenin değerinin olup olmayabileceğini belirtir. Yani bu değişken nil olabilir.

Örnek:

Burada name değişkeni bir String? (optional string) olarak tanımlandı. İçinde bir değer olabilir veya nil olabilir.

Eğer nil atarsak:

Bu durumda değişken boş yani nil olmuş oldu.


2. ! (Force Unwrapping – Zorla Açma)

Eğer ? ile tanımlanan bir optional değişkenden kesinlikle bir değer olduğunu biliyorsak, başına ! koyarak onu açabiliriz.

Örnek (Yanlış Kullanım – Crash Riski Var!)

Burada name! yazarak optional’ı açtık ve değeri doğrudan yazdırdık.

Ama eğer name nil olursa, program çöker ❌:

Bu yüzden force unwrapping (!) dikkatli kullanılmalıdır.


3. if let ile Güvenli Açma (Safe Unwrapping)

Eğer bir optional değişkeni güvenli bir şekilde açmak istiyorsak if let kullanabiliriz:

Burada:

if let unwrappedName = name ile name değişkeninin nil olup olmadığını kontrol ediyoruz.

•Eğer nil değilse unwrappedName değişkenine atanıyor ve güvenle kullanabiliyoruz.


4. guard let ile Güvenli Açma

Bir fonksiyonun başında bir optional değişkenin kesinlikle değer almasını sağlamak için guard let kullanılabilir:

5. Nil-Coalescing (?? Operatörü)

Eğer optional bir değişken nil çıkarsa yerine varsayılan bir değer atamak için ?? kullanılır:

Burada:

username nil olduğu zaman “Varsayılan Kullanıcı” yazdırılıyor.

•Eğer username bir değer içeriyorsa, o değer kullanılıyor.

 

Operatör

Açıklama

Örnek

?

Bir değişkenin nil olabileceğini belirtir.

var name: String? = “Ali”

!

Optional değişkenin içinde kesinlikle değer olduğunu düşünerek açar (Risklidir!).

print(name!)

if let

Optional değişkeni güvenli bir şekilde açar.

if let safeName = name { print(safeName) }

guard let

Fonksiyon içinde güvenli açma sağlar, nil durumunda return yapar.

guard let safeName = name else { return }

??

Optional değişken nil ise, varsayılan bir değer kullanır.

print(name ?? “Varsayılan İsim”)

Kaynak: https://openai.com/index/chatgpt/

Kategori:Swift

İlk Yorumu Siz Yapın

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir