【问题标题】:How to generate algebraic data types in scala using scalaPB如何使用 scalaPB 在 scala 中生成代数数据类型
【发布时间】:2020-02-02 03:56:34
【问题描述】:

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

另外,我不知道如何将字段设为可选和默认值。

【问题讨论】:

    标签: scala protocol-buffers scalapb


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-08-13
      • 2016-05-20
      • 2019-09-24
      • 2014-12-28
      • 2018-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-13
      相关资源
      最近更新 更多