Delphi 如何定义匿名方法的数组

Delphi 如何定义匿名方法的数组,delphi,Delphi,我想定义一个匿名方法数组:TFunc: 函数MyFunc:Integer; 开始 结束; 程序TForm84.按钮1单击(发件人:ToObject); var A:焦油; 开始 A:=[MyFunc]; 结束; 但是Delphi编译器提示错误: [dcc32 Error] E2010 Incompatible types: 'System.SysUtils.TFunc<System.Integer>' and 'Integer' [dcc32错误]E2010不兼容类型:“Syst

我想定义一个匿名方法数组:
TFunc

函数MyFunc:Integer;
开始
结束;
程序TForm84.按钮1单击(发件人:ToObject);
var A:焦油;
开始
A:=[MyFunc];
结束;
但是Delphi编译器提示错误:

[dcc32 Error] E2010 Incompatible types: 'System.SysUtils.TFunc<System.Integer>' and 'Integer'
[dcc32错误]E2010不兼容类型:“System.SysUtils.TFunc”和“Integer”

将数组用于本机数据类型,如
integer
string
也适用于类似的构造。

编译器无法确定使用
MyFunc
是否意味着调用函数或将其引用为函数

因此,您可能需要帮助编译器:

SetLength(A, 1);
A[0] := MyFunc;

编译器无法确定使用
MyFunc
是指调用函数还是将其引用为函数

因此,您可能需要帮助编译器:

SetLength(A, 1);
A[0] := MyFunc;
MyFunc()
不接受任何输入参数,因此Delphi允许在没有括号的情况下调用它,例如:

var
  I: Integer;

I := MyFunc();
I := MyFunc; // <-- same as above!
或:

或:

类型
数组:=TArray;
变量
A:数组;
开始
A:=TIntFuncArray.Create(MyFunc);//或者@或Addr(),不确定
结束;
MyFunc()
不接受任何输入参数,因此Delphi允许有选择地调用它而不使用括号,例如:

var
  I: Integer;

I := MyFunc();
I := MyFunc; // <-- same as above!
或:

或:

类型
数组:=TArray;
变量
A:数组;
开始
A:=TIntFuncArray.Create(MyFunc);//或者@或Addr(),不确定
结束;
A := [Addr(MyFunc)];
type
  TIntFuncArray := TArray<TFunc<Integer>>;
var
  A: TIntFuncArray;
begin
  A := TIntFuncArray.Create(MyFunc); // or maybe @ or Addr(), not sure
end;