我的系统中有旧消息,我希望能够将新版本的消息映射到我的系统中。

为什么不能重载我的案例类?

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)

08-25 18:28