我生活在一个非常安全/关键的 Ada-ic 环境中,并且已经养成了定义良好且有界的类型定义的习惯。我还遇到了很多 ASN1 使用/传播者。
我周围的一些人将 ASN1 定义为优于协议缓冲区的关键功能之一是 能够定义并因此检查数据范围。
那么,
常见的数字类型定义,例如
int32
、int64
超出了此处的范围。
我尝试过的解决方案/解决方案查找过程:
我阅读了这篇Google概述,发现没有提及任何数据范围定义。除了有关枚举管理/表示的功能以及一些排序功能之外。
为了提供一些其他参考,我听说/阅读了下面的链接,并了解了 Ada 实施项目。
协议缓冲区确实没有任何内置的数值范围机制。
但是语法确实支持定义自定义选项:
extend google.protobuf.FieldOptions {
optional int32 maxval = 50001;
optional int32 minval = 50002;
}
message MyMessage {
required int32 month = 1 [(minval) = 1, (maxval) = 12];
}
根据使用的库,可以使用反射在运行时访问这些库,也可以使用自定义代码生成器自动生成验证代码。
protocol buffers 真的没有任何范围定义系统吗?
是的
协议缓冲区之上是否有任何方法可以提供这样的功能?
您编写代码来检查值是否在预期范围内。