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 的功能。我不能使用例如 IntegerList,因为我需要知道 A 和 B 是什么等等.....与无限函数重载相比有什么好的解决方案吗?

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 回答