在斯卡拉IDE我得到了類下面的錯誤,我編譯:斯卡拉 - 奇怪的編譯錯誤(該方法的多個重載方案定義默認參數)
在對象MapArea,方法的多個重載替代addAnim 定義默認參數。
所以是的,他們這樣做!所以呢?我不明白這個理念...
UPDATE:
事實證明,有可能是一種情況,編譯器無法知道該選擇哪種方法(由托馬斯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項目提出一個功能請求。 – Ben
即使在你的情況下,它可能運作良好,不要忘記,其他特徵可以與你的類型相結合。這可能會帶來更多含糊之處。 Scala開發者做出的決定對我來說似乎有點嚴格,我同意這種看法,似乎它可以在一定程度上得到緩解。但是,嘿,就是這樣。正如@Ben指出的那樣,您始終可以提交功能請求。 – Madoc