在Kotlin中怎么把方法当成参数传递给另外一个方法?

假如有一个方法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") }

但是有一个定义好的方法buz,我怎么把buz方法当作第二个参数传递给foo呢?

fun buz(m: String) {
   println("another message: $m")
}
kotlinfunction
1
209
已修改
小课
小课2022-05-18 10:44
1 个回答

可以使用::操作符表示方法的引用,比如说把上面的buz方法传递给foo,我们可以这样写。

foo("a message", ::buz)

或者在使用::操作符的前面加上限定,用于指定是类或实例的buz方法。

foo("a message", this::buz)    //当前实例的buz方法
foo("a message", Demo::buz)    //Demo类中的静态buz方法
foo("a message", Demo()::buz)  //Demo类中定义的实例buz方法
1
已修改
小课
小课2022-05-18 10:54
你的回答

内容