如何通过flatbuffer阅读器区分可选的相似字段?

时间:2018-01-04 07:55:19

标签: protocol-buffers optional-arguments flatbuffers

Flatbuffer documentation提到数据中的字段是可选的。

  

每个字段都是可选的:它不必出现在电线中   表示,您可以选择省略每个人的字段   对象

如果其中一个字段没有被写入,我对平板缓冲区如何区分两个相似字段感到困惑。

例如。

table Monster {
  hp:short;
  hpNew:short;
}

如果我只在数据文件中编写hpNew,那么读者如何知道这是hpNewhp

1 个答案:

答案 0 :(得分:2)

medium article解释说内存中的表是以对虚拟表的引用开始的,它告诉我们在哪里可以找到属性。

如果有未写入的字段(可选),则此虚拟表的偏移量将标记为0.

PS:看起来这就是表格成本高于结构的原因,也是为什么平板缓冲比Cap&#Proto(它不支持这个)更好的原因。