1

我想使用 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 classnot case object

另外,我不知道如何使字段可选并具有默认值。

4

1 回答 1

0

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

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

于 2019-10-06T23:54:20.510 回答