给定函数 foo :
fun foo(m: String, bar: (m: String) -> Unit) { bar(m) }
我们能做的:
foo("a message", { println("this is a message: $it") } ) //or foo("a message") { println("this is a message: $it") }
现在,假设我们有以下功能:
fun buz(m: String) { println("another message: $m") }
有没有办法可以将 “buz” 作为参数传递给 “foo” ?就像是:
foo("a message", buz)
用于::表示函数引用,然后:
::
fun foo(msg: String, bar: (input: String) -> Unit) { bar(msg) } // my function to pass into the other fun buz(input: String) { println("another message: $input") } // someone passing buz into foo fun something() { foo("hi", ::buz) }
从 Kotlin 1.1开始,您现在可以使用作为类成员的函数(“ Bound Callable References ”),方法是在函数引用运算符前面加上实例:
foo("hi", OtherClass()::buz) foo("hi", thatOtherThing::buz) foo("hi", this::buz)