将具有整数值和字符索引的数组传递给 Pascal 中的函数
Passing an array with integer values and char indexes to a function in Pascal
我真的很想看看它是如何完成的,编译器一直假设我有整数索引和 returns 个错误。
如何传递以下数组:
countc: Array['a'..'z'] of Integer;
一个函数?
在传统的 Pascal 中,在你可以将数组之类的东西传递给函数之前,你必须声明一个 type 你的数组是它的一个实例,就像这样
type
TSimpleArray = Array['A'..'Z', '0'..'9'] of integer;
var
ASimpleArray : TSimpleArray;
换句话说,您不能在 function/procedure 的定义中指定数组的边界。
一旦你像上面那样定义了你的数组类型,你就可以声明一个函数(或过程),它有一个定义类型的参数,像这样:
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;
如果您重命名一个函数或copy/paste它来定义另一个函数,这将节省时间和精力。
我真的很想看看它是如何完成的,编译器一直假设我有整数索引和 returns 个错误。
如何传递以下数组:
countc: Array['a'..'z'] of Integer;
一个函数?
在传统的 Pascal 中,在你可以将数组之类的东西传递给函数之前,你必须声明一个 type 你的数组是它的一个实例,就像这样
type
TSimpleArray = Array['A'..'Z', '0'..'9'] of integer;
var
ASimpleArray : TSimpleArray;
换句话说,您不能在 function/procedure 的定义中指定数组的边界。
一旦你像上面那样定义了你的数组类型,你就可以声明一个函数(或过程),它有一个定义类型的参数,像这样:
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;
如果您重命名一个函数或copy/paste它来定义另一个函数,这将节省时间和精力。