【发布时间】: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
我有一个像这样的 protobuf 枚举
enum MyEnum {
A = 0;
B = 1;
C = 2;
}
在运行时,我想遍历枚举的所有可能值,如下所示:
MyEnum().uniqueValues.forEach(println)
我如何使用 scalapb 或仅在 scala 中执行此操作?
【问题讨论】:
标签: scala protocol-buffers scalapb
如果您使用默认设置的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.values 或MyEnum.A.companion.values 访问它
【讨论】: