我对Kotlin很新,我仍然想要抓住它 我们说我有这个界面:
interface A{
fun add()
}
我有一个函数和实现此接口的东西:
val calc = /*Something that implements interface A*/
fun op(func:()->Unit){
//Some code
}
最后,在我的主要功能中,我有这个:
fun main(args:Array<String>){
op(A::add)
}
函数op
是否有办法使用val calc
运行给定函数? (假设存在给定的函数)
答案 0 :(得分:0)
我想你想写这样的东西:
interface A{
fun add()
}
class AImpl: A {
override fun add() {
println("Hello, Aimpl")
}
}
val calc = AImpl()
fun op(func: A.()->Unit){
calc.func()
}
fun main(args: Array<String>) {
op(A::add)
}
这在Kotlin中称为功能文字与接收器。相关文档位于:https://kotlinlang.org/docs/reference/lambdas.html#function-literals-with-receiver
在这种情况下,您提供Lambda函数作为可在任何A
对象上调用的参数。在函数op
中,我在calc
对象上调用此方法。