call
- Kotlin kursu
- İleri seviye
- Ders 64/83
- 5 dk
KFunction.call ile dinamik çağrı öğrenirsin.
call ile fonksiyon çağrısı
KFunction.call(args...) veya invoke(args...) ile fonksiyonu çalışma zamanında çağırabilirsin. Argümanlar sırayla verilir.
Örnek: fun double(n: Int): Int = n * 2. val fn = ::double. fn.call(5) ifadesi 10 döner. fn.invoke(7) da aynı sonucu verir. Bu kalıp, fonksiyon referanslarını dinamik olarak çağırmak için kullanılır.
invoke ve call farkı
invoke ile call işlevsel olarak aynıdır; ikisi de KFunction'ı çağırır. invoke operator fonksiyon olarak tanımlıdır; fn(args) biçiminde de çağrılabilir.
Örnek: val fn = ::double. fn.invoke(5) ve fn(5) aynı sonucu verir. call daha açık, invoke daha kısa bir syntax sağlar. İkisi de çalışma zamanı tip kontrolü yapar; yanlış argüman sayısı exception fırlatır.
Uygulama double fonksiyonunu call ile çağır
fun double(n: Int): Int tanımla; gövdesi n * 2 döndürsün. main içinde val fn = ::double referansını al, fn.call(5) ve fn.invoke(7) sonuçlarını ayrı satırlarda println ile yazdır.
Başlangıç kodu
// double fonksiyonu: n * 2 döndürür
// main'de fn referansı al, call ve invoke sonuçlarını yazdırÖrnek çözüm
fun double(n: Int): Int {
return n * 2
}
fun main() {
val fn = ::double
println(fn.call(5))
println(fn.invoke(7))
}Beklenen çıktı
10 14
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir KFunction'ı çalışma zamanında çağırmak için hangi metot kullanılır?
- apply()
- let()
- call() Doğru cevap
- also()
Açıklama: call() ile KFunction çağrılır.
2 call parçalarını eşle
| Kavram | Anlamı |
|---|---|
::double |
Fonksiyon referansı |
fn.call(5) |
Çağrı |
fn.invoke(7) |
Operator çağrı |
10 |
Sonuç |
3 call çağrısını tamamla
val fn = ::double
val r = fn.____(5)
val fn = ::double
val r = fn.call(5)
Açıklama: fn.call(5) ile fonksiyon çağrılır.