我的系统中有旧消息,我希望能够将新版本的消息映射到我的系统中。
为什么不能重载我的案例类?
case class Message(a:Int, b:Int)
case class NewMessage(a:Int, b:Int, c:Int) {
def this(msg : Message) = this(a = msg.a, b = msg.b, c = 0)
}
val msg = Message(1,2)
val converted = NewMessage(msg)
此代码似乎无法编译。 :(
最佳答案
您必须使用new
运算符显式调用构造函数:
val converted = new NewMessage(msg)
之所以有效,是因为您实际上是在普通的
NewMessage
中定义第二个构造函数:NewMessage(1, 2, 3)
转换为:
NewMessage.apply(1, 2, 3)