基礎上提出的主要貢獻者flatbuffers爲空領域的一個非常好的方法:Flatbuffers:我可以更改int字段結構與1 int?
https://github.com/google/flatbuffers/issues/333#issuecomment-155856289
以獲取一個整數字段爲空默認情況下,最簡單的方法是包裝 它一個結構。如果標量不存在,這會讓你爲空。它 也不會佔用更多的空間比普通的int。
struct myint { x:int; } table mytable { scalar:myint; }enter code here
如果標量不存在,這將使您爲空。它也不會使 在線上的空間多於普通的int。
同樣基於flatbuffers文檔:
https://google.github.io/flatbuffers/md__schemas.html
你不能改變類型的字段一旦他們使用,相同大小的數據,其中一個的reinterpret_cast會外給你一個理想的結果,例如如果當前數據中沒有值使用高位,您可以將uint更改爲int。
我的問題是,我可以把INT爲的reinterpret_cast -able到敏?
換句話說,如果我以一個簡單的int作爲字段開始,我以後可以決定我實際上是否希望此int爲空並將其更改爲myint?我知道在第一個int模式中原來的默認值的所有值將在myint模式中讀取爲null,我對此表示滿意。
當然,明顯的後續問題是我可以爲所有標量類型做同樣的事情嗎?
我的問題正是由於沒有明確記錄這一事實而激起的。 如果你想推測未來,你認爲這種線格式的兼容性很可能會保持兼容,或者你的猜測是最有可能在某些時候會變得不兼容? –
我想不出爲什麼它會變得不相容。關於FlatBuffers線格式的許多事情在這一點上都是毫無用處的,事實上結構與它們所擁有的標量相當的內存不會改變。 – Aardappel