基于flatbuffers的主要贡献者提出的 null 字段的非常好的方法:
https://github.com/google/flatbuffers/issues/333#issuecomment-155856289
获取整数字段的null默认值的最简单方法是换行 它在一个结构中。如果标量不存在,这将使您为空。它 也不会占用线上比常规int更多的空间。
struct myint { x:int; } table mytable { scalar:myint; }enter code here
如果标量不存在,这将使您返回null。它也不需要 电线上的空间比普通的空间更多。
同样基于flatbuffers文档:
https://google.github.io/flatbuffers/md__schemas.html
一旦使用了字段,就无法更改它们的类型,除了相同大小的数据,其中reinterpret_cast会给你一个理想的结果,例如:如果当前数据中没有值使用高位,则可以将uint更改为int。
我的问题是,我可以将 int 视为 reinterpret_cast - myint 吗?
换句话说,如果我从一个简单的int开始作为一个字段,我可以稍后决定我真的希望这个int可以为空并将其更改为myint吗?我知道在myint模式中,第一个int模式中的默认值的所有值都将被读作 null ,我对此感到满意。
当然,明显的后续问题是我可以对所有标量类型做同样的事情吗?
答案 0 :(得分:1)
虽然没有明确记录,但是,int
和myint
是线格兼容的(它们都是内联存储的)。就像你说的那样,你将失去任何默认值实例成为null
。