Nullable extension
- Kotlin kursu
- Orta seviye
- Ders 38/116
- 5 dk
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
// 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
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
fun String____.shoutOrEmpty(): String {
return this?.uppercase() ?: ""
}
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.