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