3

プログラムで A、B、C、D のようなセットの数値を取得します。場合によっては、次のようないくつかの論文の数値の合計を計算する必要があります。

    function DoIt2 (a, b : Integer) : Integer ; overload
    begin
        result := a +b ; 
    end;


    function DoIt3 (a, b, c : Integer) : Integer ; overload
    begin
        result := a +b +c  ; 
    end;

私の問題には多くのDoItの機能が関係しています。A と B などを知る必要があるため、たとえば IntegerList を使用することはできません ..... 無限関数のオーバーロードと比較して、何か良い解決策はありますか?

4

1 に答える 1

7

オープン配列を使用する必要があります。

function Sum(const Values: array of Integer): Integer;
var
  i: Integer;
begin
  Result := 0;
  for i := low(Values) to high(Values) do
    Result := Result + Values[i];
  end;
end;

そして、オープン配列コンストラクターを使用して、次のように呼び出します。

x := Sum([1, 2]);
y := Sum([1, 2, 3]);
z := Sum([42, 666, 29, 1, 2, 3]);
i := Sum([x, y, z]);

等々。

SumInt実際、まさにこの機能 (整数バージョンの名前) と、多くの同様の機能が既にユニットに実装されていることがわかりますMath

于 2013-07-27T14:14:39.053 に答える