在Scala IDE中,我收到有关我要编译的类的以下错误:
在对象MapArea中,方法addAnim的多个重载替代定义了默认参数.
是的,他们做到了!所以呢?我不明白这个哲学......
更新:
事实证明,可能存在编译器无法知道选择哪种方法的情况(正如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
}
Run Code Online (Sandbox Code Playgroud)
sen*_*nia 10
不可能有两个具有默认参数且名称相同的方法.Scala生成方法以获取具有基于目标方法名称的名称的默认值,因此可能发生某种名称冲突.
scala> object Test {
| def m(i: String = "Default value") {}
| }
defined module Test
scala> Test.`m$default$1`
res0: String = Default value
Run Code Online (Sandbox Code Playgroud)
您没有显示您的代码,但这是一个简单的示例:
object C {
def addAnim(x: Int = 42) {}
def addAnim(y: String = "abc") {}
}
Run Code Online (Sandbox Code Playgroud)
如果我现在打电话:
C.addAnim()
Run Code Online (Sandbox Code Playgroud)
应该调用哪个方法?该对象C
将无法编译,因为编译器无法addAnim
在不提供任何参数时猜测您的意思.
归档时间: |
|
查看次数: |
3261 次 |
最近记录: |