首页 > 解决方案 > 将具有整数值和字符索引的数组传递给 Pascal 中的函数

问题描述

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

如何传递以下数组:

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

到一个函数?

标签: pascal

解决方案


在传统的 Pascal 中,在你可以将数组之类的东西传递给函数之前,你必须声明一个类型,你的数组是一个实例,就像这样

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;

这显然总计了数组的内容。

更现代的 Pascals,如 Delphi 和 FPC 的 ObjectPascals 也支持声明数组类型参数的其他方式,但它们必须从零开始(这排除了 char 索引的使用)。Delphi 和 FPC 也支持使用 `Result' 作为函数名的别名,如

function ArrayFunction(SimpleArray : TSimpleArray) : Integer;
[...]
begin
  Result := 0;

如果您重命名函数或复制/粘贴它以定义另一个函数,这将节省时间和精力。


推荐阅读