给出一个原型定义:
enum Foo {
STUFF = 1;
A_THING = 2;
}
... protobuf会将以下任何字符串正确解析为值吗?
此外,解析器实现是否因语言而异?
(C ++中的解析器函数名为Foo_Parse(const std::string&, Foo*)
;不确定它在其他语言中的含义。)
答案 0 :(得分:1)
Foo
的枚举名称解析帮助程序只接受完全字符串“STUFF”和“A_THING”。
请注意,此名称解析帮助程序只是一个方便的功能。这不是核心Protobuf功能。特别是,使用标准Protobuf编码在线路上发送枚举名称 not 。重要的是要明确这一点,因为在讨论“解析”时很容易将其误认为与Protobuf线程格式解析有关,但事实并非如此。
由于这只是一个随机助手而不是核心功能,因此其他语言的实现理论上可以提供实现任意逻辑的助手。您需要查看特定语言的文档。但是,如果任何语言实现了一个枚举名称解析帮助程序,接受了与C ++不同的字符串,我会感到有些惊讶。