CodeBlanks Logo Icon CodeBlanks

?., !! ve ?:

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"  // Misafir

Bu üç 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"  // String

Elvis 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

Main.kt
fun main() {
    val name: String? = null
    // Güvenli uzunluk ve varsayılan ismi ayrı satırda yazdır
}

Örnek çözüm

Main.kt
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

Soru
val display = name ____ "Misafir"
Cevap
val display = name ?: "Misafir"

Açıklama: name ?: "Misafir" null ise varsayılan verir.

Başlangıç bölümündeki tüm dersler