Заметки о Pascal, Delphi и Lazarus: Анонимные методы в Delphi: Перевод из справочной системы Delphi Как предполагает название, анонимный метод – это процедура или функция, с которой не связано имени. А...
P.S. Жаль кстати, что в Embarcadero - НЕДОДУМАЛИ и не додумались дать возможность превратить в ЛЯМБДЫ - ЛЮБЫЕ ЛОКАЛЬНЫЕ процедуры и функции. Очень жаль :-( Там же на самом деле - всё просто. Если бы я писал бы компилятор - я бы ОБЯЗАТЕЛЬНО бы это сделал. Там же по месту вызова на уровне компилятора МОЖНО "сварить" обёртку над локальной функцией. ЗАВЕРНУТЬ её вызов - в анонимную функцию. Чтобы она стала ПОЛНОЦЕННОЙ лямбдой. Там - ОДИН ШАГ. Ну просто - 5 мин на правку компилятора. А скорее "препроцессора".
procedure A;
procedure Inner;
begin
end;
begin
...
CallInner(@Inner);
end;
превращаем в:
procedure A;
procedure Inner;
begin
end;
begin
...
CallInner(procedure begin Inner end;);
end;
ВСЁ!!!
P.S. Жаль кстати, что в Embarcadero - НЕДОДУМАЛИ и не додумались дать возможность превратить в ЛЯМБДЫ - ЛЮБЫЕ ЛОКАЛЬНЫЕ процедуры и функции. Очень жаль :-( Там же на самом деле - всё просто. Если бы я писал бы компилятор - я бы ОБЯЗАТЕЛЬНО бы это сделал. Там же по месту вызова на уровне компилятора МОЖНО "сварить" обёртку над локальной функцией. ЗАВЕРНУТЬ её вызов - в анонимную функцию. Чтобы она стала ПОЛНОЦЕННОЙ лямбдой. Там - ОДИН ШАГ. Ну просто - 5 мин на правку компилятора. А скорее "препроцессора".
procedure A;
procedure Inner;
begin
end;
begin
...
CallInner(@Inner);
end;
превращаем в:
procedure A;
procedure Inner;
begin
end;
begin
...
CallInner(procedure begin Inner end;);
end;
ВСЁ!!!
Комментариев нет:
Отправить комментарий