引数としてパスカル/ Delphiの動的配列

アレハンドリア:

私はこのような何かをしたいと思います:

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.

しかし、これは私が得た最も近いです

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.

だから私は、私は関数を呼び出すたびに異なる配列を宣言しなければなりませんか?作業例を提供してください。

アンドレアスRejbrand:

もしあなたがそうするなら

procedure show(a: array of Integer);
var
  i: Integer;
begin
  for i in a do
    Writeln(i);
end;

あなたが書くことが

show([1, 2, 3, 4]);

配列パラメータのこの種のは、呼び出されたオープン配列パラメータ関数は、オープン配列パラメータを持っている場合は、これらの「リテラルの配列」に加えて、それを両方の動的および静的配列を与えることができます。だから、私たちの与えられた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>);

またはAを持っています

type
  TDynIntArray = array of Integer;

そして、やります

procedure show(a: TDynIntArray);

その後showのみ、ダイナミックアレイを受け入れます。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=406316&siteId=1