我理解在匿名过程中提到外部变量时,有一些特殊的操作来维护外部变量的生命周期。但是当匿名过程不使用外部变量时,它是否会生成与旧的常规过程相同的程序集调用。换句话说,片段1中的匿名函数的内部结构和片段2中的NamedFunction是否相同
片段1
type
TSimpleFunction = reference to function(x: string): Integer;
begin
y1 := function(x: string): Integer
begin
Result := Length(x);
end;
y1('test');
end.
片段1
type
TWellKnownSimpleFunction = function(x: string): Integer;
function NamedFunction(x: string): Integer;
begin
Result := Length(x);
end;
var
y1: TWellKnownSimpleFunction;
begin
y1:=NamedFunction;
y1('test');
end.
答案 0 :(得分:4)
没有。匿名方法在内部实现为接口引用。请阅读Barry Kelly's article了解详情。
您还可以查看my article我在哪里尝试使用模仿匿名的界面 方法
匿名方法不是程序变量,即使它们不捕获变量。