CodeBlanks Logo Icon CodeBlanks

Extension function

fun Receiver.ext() ile extension function öğrenirsin.

Extension function

Bir extension function, mevcut bir türe dışarıdan metot ekler. Tanımda fonksiyon adından önce alıcı tür (ReceiverType.) yazılır. Türün kendisi değişmez.

Örnek: fun String.shout(): String { return uppercase() + "!" }. Bu fonksiyon String'e shout metodunu ekler. "merhaba".shout() çağrısı MERHABA! döndürür. Extension fonksiyonlar statik olarak çözümlenir; türün kendi kaynağına dokunmaz. Bu, üçüncü taraf türleri genişletmek için kullanışlıdır.

shout fonksiyonu

Bir extension function gövdesinde this alıcı nesneyi ifade eder. Alıcının kendi metotları doğrudan çağrılabilir.

Örnek: fun String.shout(): String { return uppercase() + "!" }. Burada uppercase() aslında this.uppercase() anlamına gelir. "merhaba".shout() çağrısı MERHABA! döndürür. Extension fonksiyonlar, sınıf içinde tanımlı metotlar gibi kullanılır; ama sınıfın kaynak kodunu değiştirmez. Kütüphane türlerini genişletmek için idealdir.

Uygulama String.shout extension'ı

fun String.shout(): String extension fonksiyonu tanımla; gövdesi uppercase() + "!" döndürsün. main içinde "merhaba".shout() çağrısının sonucunu println ile yazdır.

Başlangıç kodu

Main.kt
// String.shout extension tanımı
// shout metodu büyük harf ve ünlem döndürsün
// main'de çağır ve yazdır

Örnek çözüm

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

fun main() {
    println("merhaba".shout())
}

Beklenen çıktı

MERHABA!

Soru ve cevaplar

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

1 Bir <strong>extension function</strong> nasıl tanımlanır?

  • fun Receiver.method() Doğru cevap
  • function Receiver.method()
  • extension Receiver.method()
  • class Receiver { method() }

Açıklama: extension function fun Receiver.method() biçiminde yazılır.

2 extension function tanımını tamamla

Soru
fun ____.shout(): String {
    return uppercase() + "!"
}
Cevap
fun String.shout(): String {
    return uppercase() + "!"
}

Açıklama: fun String.shout ile String'e metot eklenir.

3 extension function parçalarını eşle

Kavram Anlamı
fun String.shout Alıcı ve metot
uppercase() Alıcı metodu
"merhaba".shout() Çağrı
MERHABA! Dönüş değeri

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