将具有整数值和char索引的数组传递给Pascal中的函数

时间:2019-11-07 15:00:16

标签: pascal

我真的很想看看它是如何完成的,编译器一直假设我有整数索引并返回错误。

如何传递以下数组:

countc: Array['a'..'z'] of Integer;

功能?

1 个答案:

答案 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;

如果您重命名功能或将其复制/粘贴以定义另一个功能,则可以节省时间和精力。