CodeBlanks Logo Icon CodeBlanks

call

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

Main.kt
// double fonksiyonu: n * 2 döndürür
// main'de fn referansı al, call ve invoke sonuçlarını yazdır

Örnek çözüm

Main.kt
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

Soru
val fn = ::double
val r = fn.____(5)
Cevap
val fn = ::double
val r = fn.call(5)

Açıklama: fn.call(5) ile fonksiyon çağrılır.

İleri seviye bölümündeki tüm dersler