我真的很想看看它是如何完成的,编译器一直假设我有整数索引并返回错误。
如何传递以下数组:
countc: Array['a'..'z'] of Integer;
功能?
答案 0 :(得分:2)
在传统的Pascal中,必须先声明数组是其实例的 type ,然后才能将类似数组的内容传递给函数,
type
TSimpleArray = Array['A'..'Z', '0'..'9'] of integer;
var
ASimpleArray : TSimpleArray;
换句话说,您不能在函数/过程的定义中指定数组的边界。
如上所述定义数组类型后,可以声明一个具有所定义类型参数的函数(或过程),如下所示:
function ArrayFunction(SimpleArray : TSimpleArray) : Integer;
var
C1,
C2 : Char;
begin
ArrayFunction := 0;
for C1 := 'A' to 'Z' do
for C2 := '0' to '9' do
ArrayFunction := ArrayFunction + SimpleArray[C1, C2];
end;
这显然是数组内容的总和。
Delphi和FPC的ObjectPascals等更现代的Pascals也支持其他声明数组类型参数的方式,但是它们必须基于零(这使得不能使用char索引)。 Delphi和FPC还支持使用“结果”作为函数名称的别名,如
function ArrayFunction(SimpleArray : TSimpleArray) : Integer;
[...]
begin
Result := 0;
如果您重命名功能或将其复制/粘贴以定义另一个功能,则可以节省时间和精力。