En Scala 2.8 est-il un moyen de surcharger les constructeurs d'une classe de cas?
Si oui, s'il vous plaît mettez un extrait de l'expliquer, si non, veuillez expliquer pourquoi?
En Scala 2.8 est-il un moyen de surcharger les constructeurs d'une classe de cas?
Si oui, s'il vous plaît mettez un extrait de l'expliquer, si non, veuillez expliquer pourquoi?
La surcharge des constructeurs n'est pas spécial pour les classes de:
case class Foo(bar: Int, baz: Int) {
def this(bar: Int) = this(bar, 0)
}
new Foo(1, 2)
new Foo(1)
Cependant, vous pouvez aussi surcharger l' apply
méthode dans le compagnon de l'objet, qui est appelée lorsque vous omettez new
.
object Foo {
def apply(bar: Int) = new Foo(bar)
}
Foo(1, 2)
Foo(1)
En Scala 2.8, nommé par défaut et les paramètres peuvent souvent être utilisé à la place de la surcharge.
case class Baz(bar: Int, baz: Int = 0)
new Baz(1)
Baz(1)
vous pouvez définir une surcharge du constructeur de la manière habituelle, mais à s'en prévaloir, vous devez utiliser le "nouveau" mot clé.
scala> case class A(i: Int) { def this(s: String) = this(s.toInt) }
defined class A
scala> A(1)
res0: A = A(1)
scala> A("2")
<console>:8: error: type mismatch;
found : java.lang.String("2")
required: Int
A("2")
^
scala> new A("2")
res2: A = A(2)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.