Delphi 2009 中有一些很酷的东西,其中还包括匿名方法。我已经看过有关匿名方法的示例和博客文章,但我还没有明白。有人能解释一下为什么我应该感到兴奋吗?
最佳答案
请查看closures .
Delphi 匿名函数是闭包。
它们是在其他函数中创建的,因此可以访问该函数的范围。即使将匿名函数分配给在调用原始函数之后调用的函数参数,情况也是如此。 (我稍后将创建一个示例)。
type
TAnonFunc = reference to procedure;
TForm2 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
F1 : TAnonFunc;
F2 : TAnonFunc;
end;
procedure TForm2.Button1Click(Sender: TObject);
var
a : Integer;
begin
a := 1;
F1 := procedure
begin
a := a + 1;
end;
F2 := procedure
begin
Memo1.Lines.Add(IntToStr(a));
end;
end;
上面的方法将两个匿名函数分配给字段F1和F2。第一个增加局部变量,第二个显示变量的值。
procedure TForm2.Button2Click(Sender: TObject);
begin
F1;
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
F2;
end;
您现在可以调用这两个函数,并且它们访问相同的 a.因此,调用 F1 两次,调用 F2 一次,显示 3。 当然,这是一个简单的例子。但它可以扩展到更有用的代码。
在多线程环境中,可以在 Synchronise 调用中使用匿名函数,这样就无需使用无数的方法。
关于delphi - 有人可以向我解释一下匿名方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/256146/