重载方法在Kotlin中接收更高阶函数

时间:2015-01-21 00:12:30

标签: kotlin

是否可以使用重载方法,每个方法都接受一个函数,而不是其他任何方法,例如

fun foo(a: () -> A) { }
fun foo(b: () -> B) { }

在Scala中,这是不可能的,因为函数是Function0的实例,并且由于擦除这些方法无法消除歧义。这是Kotlin中的相同案例,如果有,是否有解决方法?

1 个答案:

答案 0 :(得分:1)

您可以使用[platformName]注释来解决Kotlin中的签名冲突:

import kotlin.platform.*

class A
class B

[platformName("foo1")]
fun foo(a: () -> A) { }
fun foo(b: () -> B) { }

查看文档here