我可以使用以下命令在Kotlin中定义内联函数:
inline fun func(a: () -> Unit, b: () -> Unit){
a()
b()
}
但是我怎么调用这个函数呢?
对于只有一个参数的普通内联函数,我将使用:
func {
doSomething()
}
具有多个内联参数的函数是否有类似的语法?
答案 0 :(得分:1)
答案 1 :(得分:1)
有几种方法可以实现此目的。 最好的方法是在最后一个参数之前使用bound function reference作为参数:
fun foo(){
func(::foo){foo()}
//this also works:
func(::foo, ::foo)
//or place the other call within parentheses in a lambda. (you can only put the last lambda behind the method call.
func( { foo() } ){foo()}
}
inline fun func(a: () -> Unit, b: () -> Unit){
a()
b()
}
如果要调用对象方法,只需将该对象名称放在::
class Bar {
val baz = Baz()
fun foo() {
func(baz::func2, ::foo)
}
fun func(a: () -> Unit, b: () -> Unit) {
a()
b()
}
}
class Baz{
fun func2(){}
}