Турбо Паскаль 6.0

         

Опять итераторы.


Метод ForEach проходит по всей коллекции и передает каждый элемент в предоставленную Вами процедуру. Продолжая предыдущий пример, процедура PrintWord получает указатель на отображаемую строку. Заметьте, что PrintWord вложенная (или локальная) процедура. Print использует метод ForEach для передачи каждого элемента коллекции в процедуру PrintWord.

procedure Print(C: PCollection);

procedure PrintWord(P : PString); far; begin Writeln(P^); end;

begin { Print } Writeln; Writeln; C^.ForEach(@PrintWord); end;

Вызов PrintWord выглядит привычно. Это просто процедура, которая берет указатель на строку и передает его значение в Writeln. Заметим директиву far в объявлении PrintWord. PrintWord не может быть методом - она должна быть процедурой. (Процедура CallDraw в TVGUID20.PAS показывает как вызвать метод в вызове итератора). Она так же должна быть вложенной процедурой. Вы можете использовать более одной процедуры, такой как PrintWord, но каждая должна быть вложена в Print и должна быть дальней процедурой.



Содержание раздела