在对象kotlin上执行方法

时间:2017-10-14 18:53:09

标签: java functional-programming kotlin

我对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运行给定函数? (假设存在给定的函数)

1 个答案:

答案 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对象上调用此方法。