Fungsi yang diberikan foo:
fun foo(m: String, bar: (m: String) -> Unit) {
bar(m)
}
Kita bisa:
foo("a message", { println("this is a message: $it") } )
//or
foo("a message") { println("this is a message: $it") }
Sekarang, katakanlah kita memiliki fungsi berikut:
fun buz(m: String) {
println("another message: $m")
}
Apakah ada cara saya bisa meneruskan "buz" sebagai parameter ke "foo"? Sesuatu seperti:
foo("a message", buz)
fun something() { foo("hi", { buz(it) }) }
this::function
bar: ((m: String) -> Unit)?
m
untuk foo, parameter lainnya adalah nama parameter dari jenis fungsi yang diteruskan dalam bilah variabel ke fungsi.Tentang fungsi anggota sebagai parameter:
kode:
sumber
Kotlin 1.1
gunakan
::
untuk metode referensi.Suka
sumber
Cukup gunakan "::" sebelum nama metode
foo(::bar)
Output :Hello World
sumber
rupanya ini belum didukung.
Info lebih lanjut:
http://devnet.jetbrains.com/message/5485180#5485180
http://youtrack.jetbrains.com/issue/KT-1183
sumber
Jika Anda ingin lulus metode setter dan pengambil .
Pemakaian:
sumber
Jawaban Jason Minard adalah jawaban yang bagus. Ini juga dapat dicapai dengan menggunakan a
lambda
.Yang bisa disebut dengan
foo("a message", buz)
.Anda juga dapat membuatnya lebih KERING dengan menggunakan a
typealias
.sumber
Contoh lain:
sumber
Fungsi kelas satu saat ini tidak didukung di Kotlin. Ada perdebatan tentang apakah ini akan menjadi fitur yang baik untuk ditambahkan. Saya pribadi berpikir mereka harus.
sumber