子类型范围是否可能具有不连续的组件?
例如,我有一个与此类似的子类型范围:
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"非常简单干净地做到这一点。常规。这是一个关于最小/最大化代码的思考实验。
答案 0 :(得分:3)
您可以将您的类型封装在私有记录中,其中完整整数类型的转换例程会为无效值引发+
。
此类例程Constraint_Error
和"+"
或"+"
和To_<private type>
有两种命名约定。我更喜欢较短的一个,但是有些人可能会认为对于使用这些操作的读者来说太令人惊讶了。