这是我的代码中非常常见的模式:
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.