суббота, 24 июня 2017 г.

Ещё про функторы

PROCEDURE EnumWindowChildren
  nWnd IN aWindow
  FUNCTOR IN aLambda
 
 aWindow aLambda DO
 // - вызываем aLambda на aWindow
 aWindow .EnumChildren ( aLambda call.me )
 // - вызываем себя рекурсивно
; // EnumWindowChildren

FunctorToIterator Desktop EnumWindowChildren .for .Out
// - перебираем все окна от Desktop рекурсивно

А теперь с анонимной функцией:

FunctorToIterator Desktop (
  nWnd IN aWindow
  FUNCTOR IN aLambda
 
 aWindow aLambda DO
 // - вызываем aLambda на aWindow
 aWindow .EnumChildren ( aLambda call.me )
 // - вызываем себя рекурсивно
) .for .Out
// - перебираем все окна от Desktop рекурсивно

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

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