?., !! ve ?:
- Kotlin kursu
- Başlangıç
- Ders 78/116
- 5 dk
safe call, non-null assertion ve Elvis operatörlerini öğrenirsin.
Safe call, non-null assertion ve Elvis
Üç önemli operatör null ile çalışır. ?. safe call'dur: alıcı null ise sonuç null olur. !! non-null assertion'dır: alıcı null ise NullPointerException fırlatır. ?: Elvis operatörüdür: sol null ise sağ tarafı döndürür.
val name: String? = null
name?.length // null
name!!.length // Exception!
name ?: "Misafir" // MisafirBu üç operatör, null-riski tek satırda yönetmenin yoludur. Hangisini seçeceğin, null olduğunda ne yapmak istediğine bağlıdır.
Üç operatörün kullanım örnekleri
name?.length ile uzunluğu güvenle alırsın; name null ise sonuç null olur, Exception verilmez. name!!.length ise "eminim null değil" diyenler içindir; yanıldıysan uygulama çöker.
val len = name?.length // Int?
val forced = name!!.length // Int (ya da Exception)
val display = name ?: "Misafir" // StringElvis operatörü özellikle bir varsayılan değer vermek istediğinde pratiktir: name ?: "Misafir" name null ise "Misafir" döndürür, değilse name'in kendisini.
Uygulama Safe call ve Elvis ile name'i işle
Bir val name: String? = null tanımla. println(name?.length) ile güvenli uzunluğu ve println(name ?: "Misafir") ile varsayılan ismi ayrı satırlarda yazdır.
Başlangıç kodu
fun main() {
val name: String? = null
// Güvenli uzunluk ve varsayılan ismi ayrı satırda yazdır
}Örnek çözüm
fun main() {
val name: String? = null
println(name?.length)
println(name ?: "Misafir")
}Beklenen çıktı
null Misafir
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Operatörü davranışıyla eşleştir
| Kavram | Anlamı |
|---|---|
?. |
Safe call (null ise null) |
!! |
Non-null assertion (null ise exception) |
?: |
Elvis (null ise varsayılan) |
String? |
Nullable tür |
2 val len = name?.length — name null ise len ne olur?
- 0
- null Doğru cevap
- -1
- Exception fırlatır
Açıklama: Safe call (?.) null alıcıda null döner; exception verilmez.
3 Boşluğu doldur: Elvis varsayılan
val display = name ____ "Misafir"
val display = name ?: "Misafir"
Açıklama: name ?: "Misafir" null ise varsayılan verir.