在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/