在Ada中,如何将数组传递给过程?

在Ada中,如何将数组传递给过程?,ada,Ada,我似乎找不到任何关于如何做到这一点的信息。有人知道我如何像传递字符或整数一样将数组传递给过程吗 这个例子将是惊人的。首先,您必须有一个命名的数组类型。匿名类型不起作用匿名类型在任何情况下都是个坏主意 例如,包标准中有一个名为String的数组类型声明为: type String is array (Positive range <>) of Character; 首先,必须有一个命名的数组类型。匿名类型不起作用匿名类型在任何情况下都是个坏主意 例如,包标准中有一个名为String的

我似乎找不到任何关于如何做到这一点的信息。有人知道我如何像传递字符或整数一样将数组传递给过程吗


这个例子将是惊人的。

首先,您必须有一个命名的数组类型。匿名类型不起作用匿名类型在任何情况下都是个坏主意

例如,包标准中有一个名为String的数组类型声明为:

type String is array (Positive range <>) of Character;

首先,必须有一个命名的数组类型。匿名类型不起作用匿名类型在任何情况下都是个坏主意

例如,包标准中有一个名为String的数组类型声明为:

type String is array (Positive range <>) of Character;

正如Jeffrey所说,您需要一个类型名。Ada语法中有一些地方需要一个没有修饰的简单类型名,还有一些地方可以使用匿名数组类型或附加了其他约束的名称。参数声明是一个地方,其中类型必须是一个简单的名称,但对于访问类型,您可以添加NOTNULL,您可能还没有了解到这一点,但这是唯一的例外。因此,你不能说

procedure joiningTo(A: in integer; B: array(1..12, 1..12) of character) is 

因为名称在此上下文中必须是简单类型名称。有两种解决方案,您需要选择哪一种更合适。如果joiningTo可以正确处理任意长度和宽度的数组,请在程序中的某个位置定义一个无约束数组类型:

type Two_Dimensional_Char_Array is array (positive range <>, positive range <>) of character;

procedure joiningTo(A : in integer; B : in Two_Dimensional_Char_Array) is


旁注:自Ada 95以来,Ada中的标准命名约定是每个单词的第一个字母大写[通常],并用u字符分隔单词;这与Java或C社区不同,Java或C社区不支持字符。另外,需要注意的是,与Java或C不同,Ada不关心标识符中的字母大小写

正如Jeffrey所说,您需要一个类型名。Ada语法中有一些地方需要一个没有修饰的简单类型名,还有一些地方可以使用匿名数组类型或附加了其他约束的名称。参数声明是一个地方,其中类型必须是一个简单的名称,但对于访问类型,您可以添加NOTNULL,您可能还没有了解到这一点,但这是唯一的例外。因此,你不能说

procedure joiningTo(A: in integer; B: array(1..12, 1..12) of character) is 

因为名称在此上下文中必须是简单类型名称。有两种解决方案,您需要选择哪一种更合适。如果joiningTo可以正确处理任意长度和宽度的数组,请在程序中的某个位置定义一个无约束数组类型:

type Two_Dimensional_Char_Array is array (positive range <>, positive range <>) of character;

procedure joiningTo(A : in integer; B : in Two_Dimensional_Char_Array) is


旁注:自Ada 95以来,Ada中的标准命名约定是每个单词的第一个字母大写[通常],并用u字符分隔单词;这与Java或C社区不同,Java或C社区不支持字符。另外,需要注意的是,与Java或C不同,Ada不关心标识符中的字母大小写

我从你的3个基本的Ada问题中看出,你显然是开始学习语言了,但实际上你对它一点都不了解。这不是一个手持设备的地方,我并不是说用一种肮脏的方式。一个简单的Ada语法参数传递的谷歌搜索结果显示了数千次点击。上网,找到一个关于Ada的好介绍,并阅读它。我已经这样做了,但我可以找到如何将基本的整数/字符传递给过程,但找不到关于我所问的将数组传递给过程的任何内容。你说:你传递它就像传递字符或整数一样。type integer\u Array是整数的数组正范围;函数SumA:Integer\u数组返回的整数为S:Integer:=0;从A'范围循环S:=S+AI中的I开始;端环;返回S;最终金额;请告诉我们你试过什么。我从你的3个基本Ada问题中看出,你显然是开始学习这门语言的,但实际上并不知道第一件事。这不是一个手持设备的地方,我并不是说用一种肮脏的方式。一个简单的Ada语法参数传递的谷歌搜索结果显示了数千次点击。上网,找到一个关于Ada的好介绍,并阅读它。我已经这样做了,但我可以找到如何将基本的整数/字符传递给过程,但找不到关于我所问的将数组传递给过程的任何内容。你说:你传递它就像传递字符或整数一样。type integer\u Array是整数的数组正范围;函数SumA:Integer\u数组返回的整数为S:Integer:=0;从A'范围循环S:=S+AI中的I开始;端环;返回S;最终金额;请给我们看看你试过什么。
type Two_Dimensional_Char_Array is array (positive range <>, positive range <>) of character;
subtype Twleve_Square is Two_Dimensional_Char_Array (1..12, 1..12);

procedure joiningTo(A : in integer; B : in Twelve_Square) is