在 Kotlin 中接收高阶函数的重载方法
Overloaded methods receiving higher order functions in Kotlin
是否可以有重载方法,每个方法只接受一个函数,没有别的,例如
fun foo(a: () -> A) { }
fun foo(b: () -> B) { }
在 Scala 中这是不可能的,因为函数对 Function0
的实例进行脱糖,并且由于擦除,这些方法无法消除歧义。这在 Kotlin 中是否也是如此,如果是,是否有解决方法?
您可以使用 [platformName]
注释解决 Kotlin 中的签名冲突问题:
import kotlin.platform.*
class A
class B
[platformName("foo1")]
fun foo(a: () -> A) { }
fun foo(b: () -> B) { }
查看文档 here
是否可以有重载方法,每个方法只接受一个函数,没有别的,例如
fun foo(a: () -> A) { }
fun foo(b: () -> B) { }
在 Scala 中这是不可能的,因为函数对 Function0
的实例进行脱糖,并且由于擦除,这些方法无法消除歧义。这在 Kotlin 中是否也是如此,如果是,是否有解决方法?
您可以使用 [platformName]
注释解决 Kotlin 中的签名冲突问题:
import kotlin.platform.*
class A
class B
[platformName("foo1")]
fun foo(a: () -> A) { }
fun foo(b: () -> B) { }
查看文档 here