Costruttore di sovraccarico per Case Class di Scala?

In Scala 2.8 c’è un modo per sovraccaricare i costruttori di una case class?

Se sì, si prega di inserire un frammento per spiegare, in caso contrario, si prega di spiegare perché?

Il sovraccarico dei costruttori non è speciale per le classi di casi:

case class Foo(bar: Int, baz: Int) { def this(bar: Int) = this(bar, 0) } new Foo(1, 2) new Foo(1) 

Tuttavia, potresti voler sovraccaricare il metodo apply nell’object companion, che viene chiamato quando ometti new .

 object Foo { def apply(bar: Int) = new Foo(bar) } Foo(1, 2) Foo(1) 

In Scala 2.8, è ansible utilizzare spesso i parametri denominati e predefiniti invece di sovraccaricare.

 case class Baz(bar: Int, baz: Int = 0) new Baz(1) Baz(1) 

Puoi definire un costruttore sovraccarico nel solito modo, ma per invocarlo devi usare la parola chiave “nuova”.

 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") :8: error: type mismatch; found : java.lang.String("2") required: Int A("2") ^ scala> new A("2") res2: A = A(2)