The lesson of today, is that Scala case classes don't appear to have auxiliary constructors.
In Scala, auxiliary constructors may be added to a class by defining a "this
" method:
scala> class AClass(s1: String, s2: String) {
def this(s: String) = this(s, "default")
}
defined class AClass
scala> new AClass("hey")
res0: AClass = AClass@187b5ff
Look what happens when you try the same trick on a case class:
scala> case class ACaseClass(s1: String, s2: String) {
def this(s: String) = this(s, "default")
}
defined class ACaseClass
scala> ACaseClass("hey"):7: error: wrong number of arguments for method apply: (String,String)ACaseClass in object ACaseClass
ACaseClass("hey")
^
The attempt at adding an auxiliary constructor compiles, but results in a runtime error.
Update: Oops, yes the can have auxiliary constructors --- see comment below, by jkriesten, straightening things out!
Update: Paul (see comment below) points to the following discussion on this topic http://www.scala-lang.org/node/976.