重载Scala的Case Classes的构造函数?

在斯卡拉2.8是否有一种方法来重载一个case类的构造函数?

如果是的话,请把一个片段解释一下,如果没有,请解释为什么?

重载构造函数对于大小写类不是特殊的:

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

但是,您也可能希望在伴随对象中重载apply方法,这会在您省略new对象时调用。

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

在Scala 2.8中,通常可以使用named和default参数来代替重载。

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

你可以用通常的方法定义一个重载的构造函数,但是要调用它,你必须使用“new”关键字。

 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)