FlatBuffers和NULL值

use*_*782 5 serialization flatbuffers

在FlatBuffers中存储NULL值的规范方法是什么?

我有

ExpirationDate     *int64
Run Code Online (Sandbox Code Playgroud)

我明白为什么FlatBuffers没有定义NULL。但我不知道如何正确处理。我应该有额外的布尔字段还是要为数组赋值?

ExpirationDate     [int64]
Run Code Online (Sandbox Code Playgroud)

ExpirationDate     int64
ExpirationDateNull bool
Run Code Online (Sandbox Code Playgroud)

对于表,我也可以使用union

Aar*_*pel 5

第三个选项是struct NullableInt64 { i:int64 },然后在table中具有type字段NullableInt64。如果不存在此字段,则访问器函数将返回NULL。并且由于它是一个结构,它将在电线上与裸int64占用相同的空间(它们都是8个字节,并且以内联方式存储在父级中)。


Shi*_*wal 4

用于存储 int32 / int64 等值。您可以直接将标量保留在表中。

但在你的情况下,你有一个间接,它可以通过平面缓冲区中的非标量创建的间接来模仿。

非标量是结构体、数组和表。

所以你可以尝试:

Struct IntPtr 
{ 
val:int64
} 

Table Expiration 
{ 
ExpirationDate:IntPtr; 
}
Run Code Online (Sandbox Code Playgroud)