Gegebene Funktion foo:
fun foo(m: String, bar: (m: String) -> Unit) {
bar(m)
}
Wir können tun:
foo("a message", { println("this is a message: $it") } )
//or
foo("a message") { println("this is a message: $it") }
Nehmen wir nun an, wir haben die folgende Funktion:
fun buz(m: String) {
println("another message: $m")
}
Gibt es eine Möglichkeit, "buz" als Parameter an "foo" zu übergeben? Etwas wie:
foo("a message", buz)
fun something() { foo("hi", { buz(it) }) }
this::function
bar: ((m: String) -> Unit)?
m
ist für foo, der andere Parameter ist der Parametername des Funktionstyps, der in der Variablenleiste an die Funktion übergeben wird.Informationen zur Elementfunktion als Parameter:
Code:
quelle
Kotlin 1.1
verwenden ,
::
um Referenzmethode.mögen
quelle
Verwenden Sie einfach "::" vor dem Methodennamen
foo(::bar)
Ausgabe :Hello World
quelle
anscheinend wird dies noch nicht unterstützt.
Mehr Info:
http://devnet.jetbrains.com/message/5485180#5485180
http://youtrack.jetbrains.com/issue/KT-1183
quelle
Wenn Sie Setter- und Getter- Methoden übergeben möchten .
Verwendung:
quelle
Jason Minards Antwort ist gut. Dies könnte auch mit a erreicht werden
lambda
.Welches kann mit aufgerufen werden
foo("a message", buz)
.Sie können dies auch etwas trockener machen, indem Sie a verwenden
typealias
.quelle
Ein anderes Beispiel:
quelle
Erstklassige Funktionen werden derzeit in Kotlin nicht unterstützt. Es gab Debatten darüber, ob dies eine gute Funktion wäre. Ich persönlich denke, sie sollten.
quelle