Плоские буферы: разные имена полей, но одинаковое смещение - PullRequest
0 голосов
/ 09 июля 2020

TL; DR: изменено имя поля в spe c после сериализации; десериализованный объект по-прежнему имеет то же значение, так что все в порядке; но есть ли у них какие-либо побочные эффекты, о которых я должен знать?

У меня есть spec c плоского буфера, определенный в файле .fbs. Я сериализую свой объект в плоский буфер, определяемый этим spe c.

Теперь я изменяю имя одного поля в таблице. Скажем, я заменяю «foo» на «bar»

Я десериализую плоский буфер в объект моего языка программирования.

Я обнаружил, что то же значение, которое было вставлено для поля foo, теперь является значение для bar.

Это то поведение, которое я хочу. Насколько я понимаю, значения определяются на основе смещения поля, поэтому фактическое имя поля не имеет значения.

Однако мне интересно, есть ли побочные эффекты в отношении того, что я сделал?

1 Ответ

1 голос
/ 09 июля 2020

Да, вы можете полностью изменить имя поля. Единственный побочный эффект заключается в том, что вы нарушаете сгенерированный API: все вызывающие абоненты должны быть изменены, чтобы использовать новое имя.

На ваш вопрос также дан ответ в https://google.github.io/flatbuffers/flatbuffers_guide_writing_schema.html в разделе «Развитие схемы. examples »вместе с другими.

...