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;

以上是Delphi TProc&lt;Integer&gt; – 可以更改参数值的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>