我想知道是否有可能使用谷歌协议缓冲区的枚举常量作为其他消息的字段数,如
enum Code {
FOO = 100;
BAR = 101;
}
message Message {
required string foo = FOO;
}
此代码不能工作,因为FOO
的类型是enum Code
,并且只能使用数字作为字段号。
我试图建立多态消息定义像这个动物的例子,定义Cat = 1;
在enum Type
和required Cat animal = 100;
作为一个唯一的扩展号。
我想这样做会很好
message Message {
required string foo = FOO.value;
}
,这样我就可以保证扩展字段号的唯一性,而无需引入另一个幻数。
所以问题:是否有可能在协议缓冲区语言中引用enum的整数值?
不,没有办法这样做。对不起。
顺便说一句,相同枚举类型的两个枚举实际上可以具有相同的数值,因此在枚举中定义这些值实际上并不能确保唯一性。