作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
给定函数 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)
}
Since Kotlin 1.1您现在可以使用作为类成员的函数(“Bound Callable References”),方法是在函数引用运算符前面加上实例:
foo("hi", OtherClass()::buz)
foo("hi", thatOtherThing::buz)
foo("hi", this::buz)
关于Kotlin:如何将一个函数作为参数传递给另一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16120697/
我是一名优秀的程序员,十分优秀!