Функция возвращает анонимную функцию. Я хотел бы присвоить результат переменной. Однако компилятор считает, что я пытаюсь назначить функцию, а не результат функции. Как я могу это решить?
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
EDIT: это не относится к анонимным или каким-либо специальным функциям: это актуально для любой функции, возвращающей функцию, это было то же самое в Turbo Pascal, прежде чем прибыл первый Delphi.