пятница, 26 июля 2013 г.

Заметки о Pascal, Delphi и Lazarus: Анонимные методы в Delphi

Заметки о 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;

ВСЁ!!!

Комментариев нет:

Отправить комментарий