- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想制作一个可以包含多种不同事件类型的 protobuf Event
消息。这是一个例子:
message Event {
required int32 event_id = 1;
oneof EventType {
FooEvent foo_event = 2;
BarEvent bar_event = 3;
BazEvent baz_event = 4;
}
}
这工作正常,但让我烦恼的一件事是 EventType
是可选的:我可以只用 event_id
编码一个对象,而 protobuf 不会提示。
>>> e = test_pb2.Event()
>>> e.IsInitialized()
False
>>> e.event_id = 1234
>>> e.IsInitialized()
True
有没有办法要求设置EventType
?如果重要的话,我正在使用 Python。
最佳答案
根据 Protocol Buffers 文档,不推荐使用 required
字段规则,并且已在 proto3 中删除。
Required Is Forever You should be very careful about marking fields as required. If at some point you wish to stop writing or sending a required field, it will be problematic to change the field to an optional field – old readers will consider messages without this field to be incomplete and may reject or drop them unintentionally. You should consider writing application-specific custom validation routines for your buffers instead. Some engineers at Google have come to the conclusion that using required does more harm than good; they prefer to use only optional and repeated. However, this view is not universal.
正如上面的文档所说,您应该考虑使用特定于应用程序的验证,而不是将字段标记为必需
。
没有办法将 oneof
标记为“必需”(即使在 proto2 中),因为在引入 oneof
时,已经广泛接受字段可能永远不应该是“必需的”,因此设计者没有费心去实现一种方法来使 oneof
成为必需的。
关于python - 在 protobuf 中需要 `oneof`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42955621/
这是builtin_owl2-rl.pie第361行 // Part 1 of cls_oo Id: cls_oo_1 c x ------------------
我正在尝试验证 PATCH为至少应具有 text 的 Todo 应用程序请求有效负载或 value属性(property)。我正在这样做 updateTodoValidators .这两个属性都是可选
如何设置 JSON Schema 规则以说明必须设置并且需要其中一个属性? 我尝试了各种方法来解决它,例如: { "id":"#", "required":true, "additi
以下是根据 http://jsonlint.com/ 的有效 JSON 模式和 http://jsonschemalint.com/draft4/# . { "$schema": "http:
我正在研究一个本体,我需要告诉 protege 一个类 x 只能具有值 y 和 z。 我想要这样的东西: Vegetable rdf:type owl:Class; owl:oneOf (car
我有一个示例 protobuf 消息: message testMessage{ oneof oneOfTest{ string test2 = 2; i
我正在使用 OpenAPISpec 文档生成 JavaClient。我使用 swagger-codegen 3.0 来生成代码。 OpenAPISpec 版本是 3.0.1。 下面是我遇到问题的 Op
在Pyparsing中,MatchFirst、Or和oneOf有什么区别 当字符串中有共享字符时 字,字,字 或(['单词','措辞','单词']) MatchFirst(['word', 'word
我想定义 PaymentMethod如下。 swagger.yaml 支持 oneOf 吗? PaymentMethod: oneOf: - $ref: '#/defini
是否可以使用 PropTypes.oneOf强制存在特定类型或字符串文字? 例子: display: PropTypes.oneOf([PropTypes.bool, 'autohide']), 或者
我收到以下规范的错误Data does not match any schemas from 'oneOf': { "info": { "version": "1.0.0", "t
我在 react 中指定“enum”类型的属性时遇到问题。根据此处的文档 React multiple components 以下代码片段应该有效: position : React.PropType
我正在创建一个复杂的 JSON 架构,但在验证“oneOf”构造时遇到问题。 我使用“oneOf”创建了一个非常简单的架构和一个简单的 JSON 文件来演示该问题。 JSON 架构: { "$sc
使用 swagger 在线编辑器遇到以下错误数据与“oneOf”中的任何架构都不匹配 '/tenants/tenant_id/groups/group_id': get: description:
有没有办法为 json 模式(tv4)设置自定义消息,以便在 oneOf 失败时 field ? 我看到大约一年前为自定义消息打开了一个问题 here和 here但是有没有办法让这项工作适用于这样的事
我正在创建一个复杂的 JSON 架构,但在验证“oneOf”构造时遇到问题。 我使用“oneOf”创建了一个非常简单的架构和一个简单的 JSON 文件来演示该问题。 JSON 架构: { "$sc
对于下面的 Protocol Buffer 消息(proto3),我如何确定设置了哪种类型?似乎没有像生成的 C++ 版本那样的“has_reply”方法。 message Event { one
Proto3 支持 oneof 功能,您可以在一条消息中包含多个字段,并且最多同时设置一个字段。 由于一次会设置一个字段,因此原型(prototype)模式中存在重复的字段名称是合理的。问题是原型(p
注意 - 使用可变参数,Phix 在下面提供了一个 super 解决方案。但是,它会在与整数一起使用时给出编译器警告,因为您将它们转换为 id,并且它不适用于例如 float 。 问题——如何编写一个
几个小时后,我仍然无法在 C++ 中使用反射在清晰(刚刚创建的)protobuf 消息中设置 oneof 字段。 我可以获得所需的OneOfDescriptor通过Descriptor的消息。但是当我
我是一名优秀的程序员,十分优秀!