Как генерировать алгебраические типы данных в Scala с помощью scalaPB - PullRequest
1 голос
/ 03 октября 2019

Я хочу сгенерировать ниже алгебраические типы данных в scala с использованием scalaPB.

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 голосов
/ 07 октября 2019

ScalaPB генерирует классы дел, даже когда нет полей. Для создания объектов дела нет доступных опций.

Вы можете отключить значения по умолчанию для всех полей в файле (или пакете), установив no_default_values_in_constructor. Смотри: https://scalapb.github.io/customizations.html#file-level-options

...