1

正是标题所要求的。我正在浏览一些 Ada 代码并遇到了

generic type X is (<>);

这是什么意思?它类似于 C++ 模板参数吗?

4

1 回答 1

6

Ada 中的泛型是带有一个或多个package形参的 a 或 。形式参数可以是对象、类型、包或子程序。实例化泛型时,您必须为所有形式参数提供实际值。procedurefunction

generic
   type X is (<>); -- formal parameter
procedure Foo(Item : in X); 

在这个声明Foo中是泛型的,并且X是形式参数。这(<>)意味着当您实例化 时Foo,实际的 forX必须是离散类型(有符号整数类型、模块化类型或枚举类型):

procedure Bar is new Foo(Character);

Bar 现在是泛型过程的一个实例Foo,可以使用以下类型的参数调用Character

Bar('@');
于 2019-06-12T15:34:17.003 回答