2

我所有的案例类和案例对象都应该在 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
4

1 回答 1

1

我认为您要问的是如何使没有字段的消息成为案例对象而不是案例类。这目前是不可能的,但在过去出现了,这是我们可以考虑的增强功能(请参阅https://github.com/scalapb/ScalaPB/issues/485) - 随时就该问题留下注释。同时,您可以创建自己的 ADT 层次结构并使用自定义类型来转换它们。

于 2019-08-16T17:23:38.633 回答