Scala-奇怪的编译错误(方法的多个重载替代定义默认参数)

标签 scala

在Scala IDE中,我得到有关要编译的类的以下错误:

in object MapArea, multiple overloaded alternatives of method addAnim define default arguments.



所以,是的!所以呢?我不了解这种哲学...

更新:

事实证明,可能存在编译器不知道选择哪种方法的情况(正如Tomasz Nurkiewicz指出的那样),我知道..但是在我的情况下,可以清楚地区分这两种方法。这是确切的代码段(这次保留了所有原始名称和内容):
  def addAnim (name: String, x: Float, y: Float, tex: Buffer[Texture], fps: Int, percent: Float = 0): TImageSequence =
    addAnim (name, x, y, tex(0).getImage.getWidth, tex(0).getImage.getHeight, tex, fps, percent)

  def addAnim (name: String, x: Float, y: Float, w: Float, h: Float, tex: Buffer[Texture], fps: Int, percent: Float = 0): TImageSequence = {
     // do stuff
  }

最佳答案

不可能有两个带有默认参数且名称相同的方法。
Scala会生成方法来获取具有基于目标方法名称的名称的默认值,因此可能发生某种名称冲突。

scala> object Test {
     |   def m(i: String = "Default value") {}
     | }
defined module Test

scala> Test.`m$default$1`
res0: String = Default value

关于Scala-奇怪的编译错误(方法的多个重载替代定义默认参数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10927218/

相关文章:

scala - Spark : save and load machine learning model on s3

scala - 为什么 Scala 中的辅助构造函数只能由对另一个构造函数的一次调用组成?

Scala 无法推断 Java 方法的类型参数

mysql - 如何让Slick建表语句使用InnoDB

scala - 如何正确地对这个 HList 进行类型注释?

multithreading - 如何设置 Scala actor 独占使用单独的线程运行?

scala - 嵌套列表的通用类型参数

Scala:检查空值/空值并返回 0 的简洁方法

scala - 如何在 DataFrame 中跨组使用 QuantileDiscretizer?

scala - Scala 中的选项 monad