Ada编程非连续的子类型范围

时间:2018-02-22 18:08:21

标签: arrays range ada

子类型范围是否可能具有不连续的组件?

例如,我有一个与此类似的子类型范围:

subtype My_Subtype is My_Num_Type range Min .. Max;

我想在此范围中添加一个额外的有效值,以避免在逻辑中检查单个值。

所以伪代码可能如下所示:

subtype My_Subtype is My_Num_Type range Min .. Max also Outlier;

我希望实现逻辑看起来像这样:

Is_Valid := My_Val in My_Subtype;

注意:我意识到我可以使用" Is_Valid"非常简单干净地做到这一点。常规。这是一个关于最小/最大化代码的思考实验。

1 个答案:

答案 0 :(得分:3)

您可以将您的类型封装在私有记录中,其中完整整数类型的转换例程会为无效值引发+

此类例程Constraint_Error"+""+"To_<private type>有两种命名约定。我更喜欢较短的一个,但是有些人可能会认为对于使用这些操作的读者来说太令人惊讶了。