我对 ADA 语言非常陌生,在我的学习过程中,我看到了很多使用此 ADA 功能的示例。在我看来,它可能仅对单元测试有用,以便能够测试父包的私有类型和方法,但我认为以这种方式编码没有任何优势,似乎破坏了封装。
除了单元测试之外,使用它们是一个好习惯吗?
让我们假设我有以下常量来定义一个只允许其范围定义内的有效值的子类型:
type Unsigned_4_T is mod 2**4;
valid_1 : constant Unsigned_4_T := 0;
valid_2 : constant Unsigned_4_T := 1;
invalid_1 : constant Unsigned_4_T := 2;
valid_3 : constant Unsigned_4_T := 3;
Run Code Online (Sandbox Code Playgroud)
现在,我想定义 Unsigned_4_T 的子类型 VALID_VALUES_T,它只接受使用常量 valid_1、valid_2 和 valid_3 的有效值。
我一直在尝试使用 Static_Predicate 来实现这一点,但是,当我声明所需子类型的变量并分配 invalid_1 值时,没有我预期的约束或编译错误。