CodeBlanks Logo Icon CodeBlanks

Özet - Extension function'lar

extension function, property ve nullable extension'ı birleştirerek bir string yardımcı extension'ı yazarsın.

Özet - Extension function'lar

Bu grupta extension function, extension property, nullable extension ve companion extension'ı öğrendin. Hepsi mevcut türlere dışarıdan metot veya özellik ekler.

Bu özette hepsini birleştirip bir String yardımcı extension seti yazacaksın. fun String.shout() ile büyük harf, val String.isLong ile uzunluk denetimi, fun String?.shoutOrEmpty() ile null-safe davranış sağlanır. Tüm parçalar bir araya geldiğinde typesafe ve kısa bir yardımcı kümesi oluşur.

Uygulama String.shout ve isLong extension'ları

fun String.shout(): String extension fonksiyonu tanımla; gövdesi uppercase() + "!" döndürsün. val String.isLong: Boolean extension property tanımla; getter'ı length > 10 döndürsün. main içinde "merhaba dünya".shout() ve "merhaba dünya".isLong değerlerini ayrı satırlarda println ile yazdır.

Başlangıç kodu

Main.kt
// String.shout extension tanımı
// String.isLong extension property tanımı
// main'de shout ve isLong çağır ve yazdır

Örnek çözüm

Main.kt
fun String.shout(): String {
    return uppercase() + "!"
}

val String.isLong: Boolean
    get() = length > 10

fun main() {
    println("merhaba dünya".shout())
    println("merhaba dünya".isLong)
}

Beklenen çıktı

MERHABA DÜNYA!
true

Uygulama Nullable 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
// Nullable String shoutOrEmpty 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 Bir <strong>extension property</strong>'nin neden yalnızca val olabileceğini hatırla. Sebep nedir?

  • Backing field saklayamadığı için Doğru cevap
  • Daha hızlı olduğu için
  • Sözdiziminin izin vermediği için
  • Yalnızca companion object içinde tanımlanabildiği için

Açıklama: Extension property backing field saklayamaz; bu yüzden val olur.

2 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? nullable alıcı tanımlar.

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