正是标题所要求的。我正在浏览一些 Ada 代码并遇到了
generic type X is (<>);
这是什么意思?它类似于 C++ 模板参数吗?
Ada 中的泛型是带有一个或多个package
形参的 a 或 。形式参数可以是对象、类型、包或子程序。实例化泛型时,您必须为所有形式参数提供实际值。procedure
function
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('@');