gpt4 book ai didi

protocol-buffers - 如何设计 Protocol Buffer 中将来的附加枚举值?

转载 作者:行者123 更新时间:2023-12-03 09:11:57 28 4
gpt4 key购买 nike

Protocol Buffer 的吸引人的功能之一是它允许您扩展消息定义,而不会破坏使用较旧定义的代码。对于枚举according to the documentation:

a field with an enum type can only have one of a specified set of constants as its value (if you try to provide a different value, the parser will treat it like an unknown field)



因此,如果扩展枚举并使用新值,则旧代码中具有该类型的字段将是未定义的或具有其默认值(如果有)。

知道将来枚举可能会增加附加值,这是解决这个问题的好策略吗?

我想到的一种方法是定义枚举的“未定义”成员,并将其设置为默认值,然后旧代码将知道它已发送了无法解释的内容。这明智吗,有没有更好的方法来应对这种情况?

最佳答案

是的,最好的方法是使枚举中的第一个值类似于UNKNOWN = 0。然后,读取带有未识别的枚举值的protobuf的旧程序会将其视为UNKNOWN,希望它们可以合理地处理该问题,例如,跳过该元素。

如果要执行此操作,还需要使枚举为optional而不是required
required通常表示“我宁愿程序只是中止而不是处理它不了解的内容。”

请注意,它必须是原始源中声明的第一个值-只是零值并不会使它成为默认值。

关于protocol-buffers - 如何设计 Protocol Buffer 中将来的附加枚举值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10392952/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com