对象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) } 

有没有一种方法可以使用val calc来运行给定的函数? (假设给定的函数存在)

我想你想写这样的东西:

 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对象。