一个函数返回一个匿名函数。我想将结果分配给一个变量。但是,编译器认为我正在尝试分配函数,而不是函数的结果。我该如何解决?
program Project9;
{$APPTYPE CONSOLE}
type
TMyEvent = reference to function: string;
var
v1: TMyEvent;
function GetHandler: TMyEvent;
begin
Result := function: string
begin
Result := '';
end;
end;
begin
v1 := GetHandler; // <- Incompatible types: 'TMyEvent' and 'Procedure'
end.
注意:我确实有一种解决方法,但我希望可以在不引入包装的情况下解决此问题:
program Project9;
{$APPTYPE CONSOLE}
type
TMyEvent = reference to function: string;
TWrapper = record
FHandler: TMyEvent;
end;
var
v1: TMyEvent;
function GetHandler: TWrapper;
begin
Result.FHandler := function: string
begin
Result := '';
end;
end;
begin
v1 := GetHandler.FHandler; // <- works
<<一个函数返回一个匿名函数。我想将结果分配给一个变量。但是,编译器认为我正在尝试分配函数,而不是函数的结果。 ...
v1 := GetHandler();