跳转到内容

Ada 编程/属性/'Valid

来自 Wikibooks,开放的书籍,开放的世界

Ada. Time-tested, safe and secure.
Ada. 经久考验,安全可靠。

对象可以通过 导入未经检查的转换覆盖 等方式变为无效。

Valid 属性 可以与任何标量类型(即数字或枚举类型)的对象一起使用,以确定其值是否有效(例如,不在范围之外等)。结果始终为 True 或 False;不会引发 Constraint_Error 或任何其他 异常

重要的是,属性的计算不计入读取对象,而读取无效对象会使程序出现错误。

-- Declare a discrete type and explicitly set the position numbers
type My_Enum is (Value1, Value2, Value3);
for My_Enum use (Value1 => 2, Value2 => 4, Value3 => 6 );

Result             : Natural;
Enum_Var, Other_Var: My_Enum;
Sneaky_Back_Door   : Integer;
for Enum_Var'Address use Sneaky_Back_Door'Address;

...

if not Result'Valid then
   -- Result is out-of-range, it has a negative value
   Result := Natural'First;
end if;
...
-- Assign a bad integer value to the enumerated type variable.
Sneaky_Back_Door := 1;
Other_Var := Enum_Var;  -- reading Enum_Var makes the program erroneous
...
if not Enum_Var'Valid then  -- this is not reading
   -- Enum_Var contains a bad value
   Enum_Var := My_Enum'First;
end if;

请注意,在上面的错误赋值语句中,由于两个变量都是相同子类型的,因此没有执行范围检查(因此不会引发异常)。

Ada 参考手册

[编辑 | 编辑源代码]

Ada 质量和风格指南

[编辑 | 编辑源代码]

Ada 理念

[编辑 | 编辑源代码]
华夏公益教科书