Pascal/Delphi 动态数组作为参数
Pascal/Delphi dynamic array as argument
我想做这样的事情:
procedure show(a : Array of Integer);
var
i : integer;
begin
for i in a do
writeln(i);
end;
begin
show((1, 2));
show((3, 2, 5));
end.
但 this is 我最接近的
Program arrayParameter(output);
type
TMyArray = Array[0..2] of Integer;
var
arr : TMyArray = (1, 2, 3);
procedure show(a : TMyArray);
var
i : integer;
begin
for i in a do
writeln(i);
end;
begin
show(arr);
end.
所以我每次调用函数时都必须声明不同的数组吗?请提供一个工作示例。
如果你这样做
procedure show(a: array of Integer);
var
i: Integer;
begin
for i in a do
Writeln(i);
end;
那你可以写
show([1, 2, 3, 4]);
这种数组参数称为open array parameter。如果一个函数有一个开放数组参数,除了这些"literal arrays",你还可以给它动态和静态数组。所以,给定我们的 show
过程,我们也可以做
var
DynArr: TArray<Integer>; // = array of Integer
StaticArr: array[0..2] of Integer;
begin
show(DynArr);
show(StaticArr);
end;
仅供比较:如果您改为
procedure show(a: TArray<Integer>);
或有一个
type
TDynIntArray = array of Integer;
并做
procedure show(a: TDynIntArray);
那么show
将只接受这样的动态数组。
我想做这样的事情:
procedure show(a : Array of Integer);
var
i : integer;
begin
for i in a do
writeln(i);
end;
begin
show((1, 2));
show((3, 2, 5));
end.
但 this is 我最接近的
Program arrayParameter(output);
type
TMyArray = Array[0..2] of Integer;
var
arr : TMyArray = (1, 2, 3);
procedure show(a : TMyArray);
var
i : integer;
begin
for i in a do
writeln(i);
end;
begin
show(arr);
end.
所以我每次调用函数时都必须声明不同的数组吗?请提供一个工作示例。
如果你这样做
procedure show(a: array of Integer);
var
i: Integer;
begin
for i in a do
Writeln(i);
end;
那你可以写
show([1, 2, 3, 4]);
这种数组参数称为open array parameter。如果一个函数有一个开放数组参数,除了这些"literal arrays",你还可以给它动态和静态数组。所以,给定我们的 show
过程,我们也可以做
var
DynArr: TArray<Integer>; // = array of Integer
StaticArr: array[0..2] of Integer;
begin
show(DynArr);
show(StaticArr);
end;
仅供比较:如果您改为
procedure show(a: TArray<Integer>);
或有一个
type
TDynIntArray = array of Integer;
并做
procedure show(a: TDynIntArray);
那么show
将只接受这样的动态数组。