c++ - Thrift 将可选转换为默认或必需
问题描述
我有一个节俭的结构
struct Message {
1: optional int userID;
...
}
将其更改为默认要求是否安全?
struct Message {
1: int userID;
...
}
如果我知道它总是设置?“必需”呢?
解决方案
如本答案所述,Thrift 中有三个(所谓的)必要性:
required
: 读时必须存在,写时必须设置optional
: 可以设置也可以不设置,完全可选- “默认”:读取时可能不存在,始终写入(除非它是
null
指针)
要回答提出的问题:
更改
optional
为默认值是安全的(即删除optional
关键字)。更改
optional
为required
可能会破坏兼容性。除非您确保所有客户端/服务器都相应更新,否则旧端可能不会为此类字段提供值。在这种情况下,另一端将拒绝传入的请求或响应,因为required
接收到的数据中缺少该字段。
有关该主题的进一步阅读,您可能需要咨询 Diwaker Gupta 强烈推荐的“缺失指南”。
推荐阅读
- c# - 在放置在画布上之前旋转 iText7 XObject
- symfony - 如何在 Symfony 4 中启用生产模式?
- javascript - JavaScript 正则表达式。将html解析为文本
- opencv - opencv solvePnP,所有轴看起来都不错,除了 Y
- javascript - 计算前端不安全的价格?
- kubernetes - Kubernetes RBAC - 禁止尝试授予额外权限
- python - 使用 Selenium 在 python 中的 WebScraping 问题
- c++ - 使用 std::vector 迭代器和调整大小/保留的奇怪/有趣的行为
- bash - shell脚本中的命令在线参数
- lambda - “无法转换对象 keras”:如何正确实现这一层?