flatbuffer reader 区分的选择性写入的similar-fields如何区分?
How are similar-fields that are optionally written, distinguished by flatbuffer reader?
Flatbuffer documentation 提到字段在数据中是可选的。
Each field is optional: It does not have to appear in the wire
representation, and you can choose to omit fields for each individual
object.
如果其中一个字段未写入,我对 flatbuffer 如何区分两个相似字段感到有点困惑。
例如。
table Monster {
hp:short;
hpNew:short;
}
这里如果我在数据文件里只写hpNew
,reader怎么知道这是hpNew
还是hp
?
medium article 解释说内存中的 table 是从 对虚拟 table 的引用开始的,它告诉我们在哪里可以找到属性。
如果有未写入的字段(可选),此虚拟 table 将其偏移量标记为 0。
PS:这似乎是 table 的成本高于结构的原因,也是 flatbuffer 优于 Cap'n Proto(不支持此功能)的原因。
Flatbuffer documentation 提到字段在数据中是可选的。
Each field is optional: It does not have to appear in the wire representation, and you can choose to omit fields for each individual object.
如果其中一个字段未写入,我对 flatbuffer 如何区分两个相似字段感到有点困惑。
例如。
table Monster {
hp:short;
hpNew:short;
}
这里如果我在数据文件里只写hpNew
,reader怎么知道这是hpNew
还是hp
?
medium article 解释说内存中的 table 是从 对虚拟 table 的引用开始的,它告诉我们在哪里可以找到属性。
如果有未写入的字段(可选),此虚拟 table 将其偏移量标记为 0。
PS:这似乎是 table 的成本高于结构的原因,也是 flatbuffer 优于 Cap'n Proto(不支持此功能)的原因。