2011-05-13 2 views
0

Eh bien, j'ai quelque chose comme ceci:constructeur super ne peut pas être passé une référence auto sauf si le paramètre est déclaré par le nom

trait A 

class Serving(a: => A) 

object App extends Serving(App.Main) { 
    object Main extends A 
} 

Et je reçois l'erreur super constructor cannot be passed a self reference unless parameter is declared by-name. Je peux travailler en faisant

object App extends Serving(Serv.Main) 

object Serv { 
    object Main extends A 
} 

mais je ne veux pas. Il ajoute 2 .class es supplémentaires et cela me semble unelegant. L'utilisation de object App extends Serving(this.Main) génère également une erreur. La structure de A et Serving ne peut pas vraiment être modifiée, mais est-il possible de contourner cette erreur?

Répondre

1

Votre code compile très bien dans Scala 2.8.1, même si le paramètre n'est pas déclaré par son nom.

+0

Et cet exemple compile avec 2.9.0, aussi ... Ok, 8 heures de codage sont trop. Désolé de t'avoir dérangé les gens! – Lanbo

Questions connexes