泛型类型X是(<>); 意思?

Maw*_*awg 1 ada

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

generic type X is (<>);
Run Code Online (Sandbox Code Playgroud)

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

egi*_*lhh 6

在阿达一个普通的或者是一个packageprocedure或者function,与一个或多个形式参数。形式参数可以是对象,类型,包或子程序。实例化泛型时,必须提供所有形式参数的实际值。

generic
   type X is (<>); -- formal parameter
procedure Foo(Item : in X); 
Run Code Online (Sandbox Code Playgroud)

在此声明中Foo是通用的,并且X是形式参数。这(<>)意味着在实例化时Foo,for的实际值X必须是离散类型(有符号整数类型,模数类型或枚举类型):

procedure Bar is new Foo(Character);
Run Code Online (Sandbox Code Playgroud)

Bar现在是通用过程的实例Foo,可以用type参数来调用Character

Bar('@');
Run Code Online (Sandbox Code Playgroud)