【问题标题】:Is there a way to get all possible protobuf Enum values using scalapb?有没有办法使用 scalapb 获取所有可能的 protobuf 枚举值?
【发布时间】:2022-11-30 05:02:47
【问题描述】:

我有一个像这样的 protobuf 枚举

enum MyEnum {
A = 0;
B = 1; 
C = 2;
}

在运行时,我想遍历枚举的所有可能值,如下所示:

MyEnum().uniqueValues.forEach(println)

我如何使用 scalapb 或仅在 scala 中执行此操作?

【问题讨论】:

    标签: scala protocol-buffers scalapb


    【解决方案1】:

    如果您使用默认设置的scalapb,则以下 protobuf 枚举类型

    enum MyEnum {
      A = 0;
      B = 1; 
      C = 2;
    }
    

    将被转换为带有伴生对象的抽象类

    sealed abstract class MyEnum(val value: _root_.scala.Int) extends _root_.scalapb.GeneratedEnum 
    ???
    object MyEnum extends _root_.scalapb.GeneratedEnumCompanion[MyEnum]
    

    伴随对象MyEnum 将提供您需要的方法values

    lazy val values = scala.collection.immutable.Seq(A, B, C)
    

    因此,您可以通过MyEnum.valuesMyEnum.A.companion.values 访问它

    【讨论】:

      猜你喜欢
      • 2010-09-14
      • 2015-03-17
      • 2014-09-11
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-03
      • 1970-01-01
      相关资源
      最近更新 更多