Extension function
- Kotlin kursu
- Orta seviye
- Ders 36/116
- 5 dk
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
// 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
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
fun ____.shout(): String {
return uppercase() + "!"
}
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 |