Gegeben Funktion foo:Kotlin: Wie übergibt man eine Funktion als Parameter an einen anderen?
fun foo(m: String, bar: (m: String) -> Unit) {
bar(m)
}
Wir tun können:
foo("a message", { println("this is a message: $it") })
//or
foo("a message") { println("this is a message: $it") }
wir nun an, wir die folgende Funktion haben:
fun buz(m: String) {
println("another message: $m")
}
Gibt es eine Möglichkeit, ich Buz passieren kann“ "Als Parameter für" foo "? Etwas wie:
foo("a message", buz)
Bitte korrigieren Sie mich, wenn ich falsch liege, aber es scheint, dass nur Top-Level-Funktionen (d. H.gehören nicht zu einer Klasse) kann auf diese Weise weitergegeben werden; Klassenmethoden können nicht :-( –
Ein Memberreferenz kann übergeben werden, aber das wäre in diesem Fall eine 2-Parameter-Funktion, wobei der erste Parameter eine Instanz der Klasse benötigt. Ein besserer Weg ist, die Memberfunktion mit einem Lambda zu umbrechen Angenommen, alle oben genannten wären in einer Klasse: 'Spaß etwas() {foo (" hi ", {buz (it)})}' –
gibt es sowieso, dies zu tun, wenn buz generisch ist und Typ Rückschluss scheitert? –