当我发现这个例子时,我正在尝试学习模式匹配。似乎案例类模式匹配不适用于重载的案例类构造函数。
case class MyClass(var first:String, var last:String){
def this(first: String) = this(first, "")
override def toString = "First: "+ first + " Last:" +last
}
val myClassTwo = new MyClass("a", "b")
myClassTwo match {
case MyClass(a,b) => println("two constructor matched")
case MyClass(a) => println("one constructor matched")
case _ => println("Not matched")
}
我在“case MyClass(a)”行收到编译错误“模式 MyClass(first:String, last:String) 的参数数量错误。我期待模式匹配适用于重载的构造函数,但它不起作用,因为我预期。有人可以解释一下这种行为吗?
我也得到了一个构造函数参数的错误结果。
val myClassOne = new MyClass("a")
myClassOne match {
case MyClass(a,b) => println("two constructor matched")
case _ => println("Not matched")
}
即使myClassOne
只有一个参数,这也会产生“两个构造函数匹配”。请解释。