这是我的代码中非常常见的模式:

SetLength(SomeDynamicArray, Length(SomeDynamicArray)+1);
SomeDynamicArray[High(SomeDynamicArray)] := NewElement;


有没有办法在一一行中做到这一点?

编辑:这是非常低效的。我知道。我首先使用动态数组(在我自己的代码中,在我仅使用的个人项目中),因为它们是最易于使用的,并且我只需要用尽可能少的代码就能完成工作。

最佳答案

这是一个仅适用于TArray<T>的泛型黑客:

type
  TAppender<T> = class
    class procedure Append(var Arr: TArray<T>; Value: T);
  end;

class procedure TAppender<T>.Append;
begin
  SetLength(Arr, Length(Arr)+1);
  Arr[High(Arr)] := Value;
end;


用法:

var
  TestArray: TArray<Integer>;

begin
  TAppender<Integer>.Append(TestArray, 5);
end.

10-05 22:25