我可以在 flatbuffers 中更改已弃用字段的类型吗?

Can I change deprecated field's type in flatbuffers?

提问人:strncmp 提问时间:10/3/2023 更新时间:10/3/2023 访问量:26

问:

考虑一下我们有这个 fbs

include "/.../foo.fbs";

...

table Bar {
    foo:Foo (deprecated);
    message:SomeMessage;
}

root_type Bar;

我可以在不破坏向后兼容性的情况下将 foo 的类型更改为一些布尔值或一些空表吗?我在这里的目标是从 foo.fbs 中删除依赖项

编写了一个简单的工具,用于使用旧架构进行序列化,并使用新架构进行反序列化。工作正常,但这种操作仍然可能有一些副作用

扁平缓冲器

评论


答:

1赞 Aardappel 10/3/2023 #1

您不能将其更改为 a,因为这是一种不同大小的类型。最干净的做法是简单地创建一个空类型而不是删除它,例如,尽管如果您真的必须删除它,只要它永远不会被访问,声明(或任何通过引用/偏移类型)也可以工作。boolFootable Foo {}foo:string