gpt4 book ai didi

scala - Scala 中的 case 类重载

转载 作者:行者123 更新时间:2023-12-04 21:53:30 27 4
gpt4 key购买 nike

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

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

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)

这段代码似乎无法编译。 :(

最佳答案

您正在重载构造函数,而您想要做的是重载 apply 方法。您可以在伴生对象上执行此操作:

case class NewMessage(a: Int, b: Int, c: Int) 

object NewMessage {
def apply(msg: Message) = new NewMessage(a = msg.a, b = msg.b, c = 0)
}

val converted = NewMessage(msg)

关于scala - Scala 中的 case 类重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10888498/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com