CodeBlanks Logo Icon CodeBlanks

Nullable extension

Nullable receiver ile extension function öğrenirsin.

Nullable extension

Bir nullable extension, alıcısı nullable olan extension function'dur. fun Type?.method() biçiminde yazılır; null olsa bile çağrılabilir.

Örnek: fun String?.shoutOrEmpty(): String { return this?.uppercase() ?: "" }. Bu fonksiyon hem String hem null ile çağrılabilir. "merhaba".shoutOrEmpty() çağrısı MERHABA döndürür; null.shoutOrEmpty() çağrısı "" döndürür. Nullable extension, null kontrolünü tek yerde toplar; null-safe yardımcılar için uygundur.

shoutOrEmpty fonksiyonu

Bir nullable extension gövdesinde this nullable olur. this?.metot() ile güvenli çağrı yapılır; ?: ile varsayılan verilir.

Örnek: fun String?.shoutOrEmpty(): String { return this?.uppercase() ?: "" }. this?.uppercase() eğer this null değilse büyük harfe çevirir, null ise null döndürür. ?: "" null durumunda boş dize verir. "merhaba".shoutOrEmpty() çağrısı MERHABA, null.shoutOrEmpty() çağrısı "" döndürür. Nullable extension, null güvenli yardımcı yazmanın kısa yoludur.

Uygulama String?.shoutOrEmpty extension'ı

fun String?.shoutOrEmpty(): String extension fonksiyonu tanımla; gövdesi this?.uppercase() ?: "" döndürsün. main içinde "merhaba".shoutOrEmpty() çağrısının sonucunu ve val s: String? = null bildirip s.shoutOrEmpty() çağrısının sonucunu ayrı satırlarda println ile yazdır.

Başlangıç kodu

Main.kt
// String?.shoutOrEmpty nullable extension tanımı
// null-safe büyük harf ya da boş dize döndürsün
// main'de dolu ve null değerleri yazdır

Örnek çözüm

Main.kt
fun String?.shoutOrEmpty(): String {
    return this?.uppercase() ?: ""
}

fun main() {
    println("merhaba".shoutOrEmpty())
    val s: String? = null
    println(s.shoutOrEmpty())
}

Beklenen çıktı

MERHABA

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 nullable extension tanımını tamamla

Soru
fun String____.shoutOrEmpty(): String {
    return this?.uppercase() ?: ""
}
Cevap
fun String?.shoutOrEmpty(): String {
    return this?.uppercase() ?: ""
}

Açıklama: String? alıcı nullable türdür.

2 nullable extension parçalarını eşle

Kavram Anlamı
String? Nullable alıcı
this?.uppercase() Güvenli çağrı
?: "" Elvis operatörü
null.shoutOrEmpty() Null çağrı

3 Nullable extension function <code>fun String?.shoutOrEmpty()</code> ne zaman kullanışlıdır?

  • Yalnızca null olmayan değerler için
  • Hem null hem null olmayan değerlerle çağrılabileceği durumlarda Doğru cevap
  • Yalnızca String literal'ler için
  • Soyut sınıflarda

Açıklama: Nullable extension hem null hem dolu değerlerle çağrılabilir.

Orta seviye bölümündeki tüm dersler