在 ScalaPb 中,如何创建一个案例对象和案例 class 从同一特征扩展?
In ScalaPb, How to create a case object and case class extending from the same trait?
我所有的案例 类 和案例对象都应该在 protobuf 中。现在我需要它们属于一个特征。
遗憾的是,我就是这样做的:
message WGCommand {
oneof sealed_value {
EnqueueWorkDone enq = 1;
OpenWorkgroup oWg = 3;
}
}
message OpenWorkgroup {}
message EnqueueWorkDone {
required string id = 1;
required string actorRef = 2;
}
这个创造了
final case class OpenWorkgroup(){...}
我希望我的 protobuf 产生这样的东西:
sealed trait WGCommand
case object OpenWorkgroup extends WGCommand
case class EnqueueWorkDone(id:String, actorRef:String) extends WGCommand
我认为您要问的是如何使没有字段的消息成为案例对象而不是案例 class。这目前不可能,但过去曾出现过,这是我们可以考虑的增强功能(请参阅 https://github.com/scalapb/ScalaPB/issues/485)- 请随时就该问题发表评论。同时,您可以创建自己的 ADT 层次结构并使用自定义类型与它们相互转换。
我所有的案例 类 和案例对象都应该在 protobuf 中。现在我需要它们属于一个特征。
遗憾的是,我就是这样做的:
message WGCommand {
oneof sealed_value {
EnqueueWorkDone enq = 1;
OpenWorkgroup oWg = 3;
}
}
message OpenWorkgroup {}
message EnqueueWorkDone {
required string id = 1;
required string actorRef = 2;
}
这个创造了
final case class OpenWorkgroup(){...}
我希望我的 protobuf 产生这样的东西:
sealed trait WGCommand
case object OpenWorkgroup extends WGCommand
case class EnqueueWorkDone(id:String, actorRef:String) extends WGCommand
我认为您要问的是如何使没有字段的消息成为案例对象而不是案例 class。这目前不可能,但过去曾出现过,这是我们可以考虑的增强功能(请参阅 https://github.com/scalapb/ScalaPB/issues/485)- 请随时就该问题发表评论。同时,您可以创建自己的 ADT 层次结构并使用自定义类型与它们相互转换。