在FlatBuffers中存储NULL值的规范方法是什么?
我有
ExpirationDate *int64
我了解为什么FlatBuffers没有定义NULL。但我不知道如何正确处理。我应该有多余的布尔字段还是要为数组赋值?
ExpirationDate [int64]
vs
ExpirationDate int64
ExpirationDateNull bool
对于表,我也可以使用union
。
答案 0 :(得分:3)
第三个选项是struct NullableInt64 { i:int64 }
,然后表中的字段类型为NullableInt64
。当此字段不存在时,访问器函数将返回NULL
。而且由于它是一个结构,它将在电线上与裸int64占用相同的空间(它们都是8个字节,并以内联方式存储在父级中)。
答案 1 :(得分:2)
用于存储int32 / int64等值。您可以将标量直接保存在表中。
但是在您的情况下,您有一个间接寻址,可以通过平面缓冲区中非标量创建的间接转移来模仿。
非标量是结构,数组和表。
所以您可以尝试:
Struct IntPtr
{
val:int64
}
Table Expiration
{
ExpirationDate:IntPtr;
}