Маленькое предложение по расширению TCollection

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Маленькое предложение по расширению TCollection

Сообщение Climber » 21.05.2010 16:42:55

Давайте туда что-нибудь типа такого добавим:
Код: Выделить всё
interface
type
  TIteratorProc: procedure(CollectionItem: TCollectionItem) of object;

  TCollection
  ...
  public
    procedure Iterator(IteratorProc: TIteratorProc);
  end;

implementation

procedure TCollection.Iterator(IteratorProc: TIteratorProc);
var i: integer;
begin
  for i:=0 to Count-1 do
    IteratorProc(Items[i]);
end;

Короче, такой способ разом произвести определенное действие над всеми элементами коллекции.
Себе-то я уже сделал, вот теперь хотел с остальными поделиться...
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: Маленькое предложение по расширению TCollection

Сообщение Mr.Smart » 21.05.2010 16:45:43

Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Маленькое предложение по расширению TCollection

Сообщение hinst » 21.05.2010 17:15:51

статья описывает то, чего в стабильном релизе нет. сейчас прогнал поиск строки "IEnumerable" по source от fpc 2.4.0, поисковик показывает, что нет там такой :roll:
алсо делал так
Код: Выделить всё
for c in s do Write(c);
, компилятор 2.4.0 ругается
Последний раз редактировалось hinst 21.05.2010 17:51:48, всего редактировалось 1 раз.
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Маленькое предложение по расширению TCollection

Сообщение Mr.Smart » 21.05.2010 17:41:25

hinst
Так возьми fpc из svn

Добавлено спустя 1 минуту 17 секунд:
hinst писал(а):статья имхо лажа.

Не нравится отредактируй! Это перевод с буржуйского...
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Маленькое предложение по расширению TCollection

Сообщение alexrayne » 21.05.2010 23:01:11

Старый турбовижн етот метоб называл ForEach.
а по поводу
Mr.Smart писал(а):http://wiki.freepascal.org/for-in_loop/ru

это можно делать и в пределах стандартов паскаля, а не прибегать к исхищрениям компилятора.
имхо что итератор что цикл - оба дадут одинаковый результат, вопрос что можно сделать оптимизированее.
мне кажется оба варианта имеют право на жизнь.
alexrayne
постоялец
 
Сообщения: 125
Зарегистрирован: 03.12.2008 16:56:26

Re: Маленькое предложение по расширению TCollection

Сообщение sign » 22.05.2010 07:30:12

Есть ещё один удобный механизм:
Код: Выделить всё
var T: TCollection;
    P: TCollectionItem;
begin
...
  for P in T1 do  MyProc(P);   
...
end;
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru