小编Hos*_*ted的帖子

在 Scala 中调用 Kotlin 的重载方法

这里有两个函数,一个在kotlin.kt:

interface TraitA

fun <T : TraitA> foo(a: Any, f: (T) -> Unit) {
    TODO()
}
Run Code Online (Sandbox Code Playgroud)

另一个适配器函数 Scala.scala

import KotlinKt.foo

object Scala {
  def adapter[E <: TraitA](f: (E) => Unit): Unit = {
    foo[E](None, { a =>
      // Do something

      kotlin.Unit.INSTANCE
    })
  }
}
Run Code Online (Sandbox Code Playgroud)

直到这一刻,它编译。但是当我在 Kotlin 中重载这个函数时:

interface TraitA

fun <T : TraitA> foo(f: (T) -> Unit) {
    TODO()
}

fun <T : TraitA> foo(a: Any, f: (T) -> Unit) {
    TODO()
}
Run Code Online (Sandbox Code Playgroud)

Scala 无法编译并出现以下错误:

> Task :scala:compileScala …
Run Code Online (Sandbox Code Playgroud)

scala kotlin

8
推荐指数
1
解决办法
142
查看次数

标签 统计

kotlin ×1

scala ×1