2010-05-08 7 views

Répondre

4

Cela dépend ce que vous entendez par « constructeurs nommés », mais oui, vous pouvez surcharger les constructeurs voir Overload constructor for Scala's Case Classes?

vous pouvez également mettre les méthodes d'usine dans un Companion objets pour votre classe (singleton).

3

Je ne pense pas qu'il existe mais l'idiome du constructeur nommé peut être pris en charge par des méthodes d'objet appelant des constructeurs de classe. En règle générale dans Scala l'appliquent méthode est utilisée comme il peut utiliser la syntaxe d'appel de fonction:

val mc = MyClass(a, b, c) 

avec la définition suivante

object MyClass {def apply(a: Atype, b: Btype, c: Ctype) = new MyClass(a, b, c)} 

ou si vous voulez quelque chose comme

val mc = MyClass.create(a, b, c) 

il serait simplement

object MyClass {def create(a: Atype, b: Btype, c: Ctype) = new MyClass(a, b, c)} 

Vous n'êtes pas limité à l'objet compagnon, mais les constructeurs privés et protégés vous demanderont d'utiliser l'objet compagnon directement ou en tant que proxy pour accéder au (x) constructeur (s) de classe,