Delphi TProc<Integer> – 可以更改参数值
是否可以TProc<T>允许 aValue 不仅可以读取,还可以在TProc匿名程序中进行编辑?
var xProc2: TProc<Integer>;
xProc2 := procedure(aValue: Integer)
begin
aValue := 5;
end;
德尔福 10.4.x
回答
如果代码完全需要TProc<Integer>;,则不需要。您可以更改值类型参数的本地副本并在过程中使用它,但外部代码看不到更改。
如果可能,您可以使用类型为 的指针参数PInteger,并更改aValue^.
你也可以用var参数定义自己的泛型类型
type
TProcvar<T> = reference to procedure (var Arg1: T);
并应用它
var xProc2: TProcVar<Integer>;
xProc2 := procedure(var aValue: Integer)
begin
aValue := 5;
end;
但我认为最可靠的方法是 - 使用函数 TFunc<T,TResult> (或者TFunc<TResult>如果你不使用输入参数)
var xFunc: TFunc<Integer, Integer>;
xfunc := function(aValue: Integer): Integer
begin
Result := aValue + 5;
end;
THE END
二维码