In Scala IDE ottengo il seguente errore sulla classe sono da compilare:Scala - strano errore di compilazione (alternative multiple sovraccariche di un metodo di definire gli argomenti di default)
in oggetto MapArea, molteplici alternative di overload di metodo addAnim definire gli argomenti predefiniti.
Quindi sì, lo fanno! E allora? Non capisco la filosofia di questo ...
UPDATE:
Si scopre che ci potrebbe essere una situazione in cui il compilatore non può sapere quale metodo per scegliere (come sottolineato da Tomasz Nurkiewicz) , ok capisco .. ma nella mia situazione questi due metodi possono chiaramente essere distinti. Ecco il pezzo esatto di codice (con tutti i nomi originali e roba conservato questa volta):
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
}
Sembra che Scala non consenta questa funzione a causa della possibilità di creare ambiguità irrisolvibili, anche se alcuni casi non sono ambigui. Stando così le cose, le tue opzioni sono di dare nomi diversi alle tue funzioni, o di presentare una richiesta di funzione con il progetto Scala. – Ben
Anche se nel tuo caso, potrebbe funzionare bene, non dimenticare che altri tratti possono essere combinati con il tuo tipo. Ciò potrebbe portare a più ambiguità. Anche la decisione presa dagli sviluppatori di Scala mi sembra un po 'severa, e condivido l'idea che sembra che possa essere alleviata in una certa misura. Ma, hey, è così. Come sottolineato da @Ben, puoi sempre presentare una richiesta di funzionalità. – Madoc