在 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