如何使用scalaPB在Scala中生成代数数据类型

时间:2019-10-03 19:32:12

标签: scala scalapb

我想使用scalaPB在scala中生成以下代数数据类型。

trait MyEventCmd
case class MyEvent(mytype: Int, cp: Option[Double], value: Option[String] = None, id: Option[String] = None) extends MyEventCmd
case object Flush extends MyEventCmd

我在protobuf myevent.proto-

下定义了
syntax = "proto3";

message MyEventCmd {
  oneof sealed_value {
    Flush lit = 1;
    MyEvent event = 2;
  }
}

message Flush {
}

message MyEvent {
  int32 eType = 1;
  double cp = 2;
  string value = 3;
  string id = 4;
}

我定义的问题是Flush生成为case class而不是case object

此外,我不知道如何将字段设置为默认值。

1 个答案:

答案 0 :(得分:0)

即使没有字段,ScalaPB也会生成案例类。没有可用的选项来生成案例对象。

您可以通过设置no_default_values_in_constructor来禁用文件(或包)中所有字段的默认值。请参阅:https://scalapb.github.io/customizations.html#file-level-options