所以我有一个带有用户定义的形式参数的通用包:
type element is (<>);
该类型是离散的,因为我在整个程序中使用它作为索引。所以,假设我有两个不同的数组,其中一个我可以像这样放“元素”:
array1 : array (element) of integer;
和第二个数组,其中起始索引比array1的索引少一个,假设是这样写的:
array2 : array (1_less_than_element .. element) of integer;
我如何指定我希望array2以比array1少一个索引值的方式启动?
另外,值得一提的是我的程序是关于拓扑排序的,并且在开始时我要获得要排序的关系总数(NR)。以前,当我相信程序不一定是通用的,一切都涉及整数时,我只是说:
array1 : array (1 .. NR) of integer;
array2 : array (0 .. NR) of integer;
然而,现在它是通用的,我不知道如何指定等价,因为规范似乎表明索引必须是类型元素。
答案 0 :(得分:1)
我相信我找到了解决方案。为了后人,我会继续在这里发布答案。如果我弄错了或有更好的方式等,请发帖和/或告诉我。
由于离散类型是Ada中标量类型的后代,因此它继承了标量类型的属性。一个这样的属性是Scalar'Pred(Arg:X),它在枚举类型中返回X之前的值。对于数字类型,它基本上只是递减索引。