为什么“泛型”下包含预定义类型的变量? (ADA)

时间:2016-01-16 04:16:30

标签: generics ada

我目前正在大学攻读CS,我刚开始学习数据结构和算法课程。我的教授非常喜欢(实际上迫使我们)我们使用Ada。为了获得成功,我开始查找一些内容,并发现这段代码描述了如何编写泛型堆栈:

generic
  Max: Positive; 
  type Element_T is private;
package Generic_Stack is
  procedure Push (E: Element_T);
  function Pop return Element_T;
end Generic_Stack;

对我来说最重要的是变量“Max。”由于它是积极的类型,它似乎是合乎逻辑的,它是通用的。也许我仍然对这个想法太新了,但我认为泛型背后的想法是它基本上是一个空壳,并且可以在实例化时与不同的数据类型互换。

也许我只是不太了解泛型。如果没有,有人可以赐教我吗?

1 个答案:

答案 0 :(得分:3)

在泛型的正式部分中有一个变量是一种传递常量(在编译时)来配置泛型的方法。这样的常量可以用于定义某些数据结构中的其他变量(如数组(1..Max)),这不能总是通过将值作为参数传递给子程序来实现。 此外,这确保Push和Pop都使用相同的" Max"常量(将这样的常量作为参数传递给两个子程序没有意义)