В создаваемых классах коллекций можно предоставить блок итератора (iterate block) вместо написания собственного класса итератора для поддержки коллекции.
Можно использовать блок итератора и для других рутинных работ.
Этот новый подход применяет блоки итераторов. Когда вы пишете класс коллекции, такой как K e y e d L i s t или P r i o r i t y Q u e u e — вы реализуете блок итератора вместо реализации интерфейса I E n u m e r a t o r . Затем пользователи этого класса могут просто итерировать коллекцию с помощью цикла f o r e a c h . Приготовьтесь расстаться с частью вашего драгоценного времени, чтобы ознакомиться с несколькими вариантами блоков итераторов.
Все примеры в этом разделе являются частью демонстрационной програм мы I t e r a t o r B l o c k s на прилагаемом компакт-диске.
/ / I t e r a t o r B l o c k s - д е м о н с т р а ц и я п р и м е н е н и я б л о к о в / / и т е р а т о р о в д л я н а п и с а н и я и т е р а т о р о в к о л л е к ц и й
u s i n g S y s t e m ;
n a m e s p a c e |
I t e r a t o r B l o c k s |
{ |
|
c l a s s I t e r a t o r B l o c k s
{
/ / M a i n - д е м о н с т р а ц и я п я т и р а з л и ч н ы х п р и л о ж е н и й б л о к о в / / и т е р а т о р о в
s t a t i c v o i d M a i n ( s t r i n g [ ] a r g s )
{
/ / И т е р и р о в а н и е м е с я ц е в г о д а , в ы в о д к о л и ч е с т в а д н е й в / / к а ж д о м и з н и х
M o n t h D a y s m d = n e w M o n t h D a y s ( ) ; / / И т е р и р у е м
C o n s o l e . W r i t e L i n e ( " М е с я ц ы : \ n " ) ; f o r e a c h ( s t r i n g s M o n t h i n md)
{
C o n s o l e . W r i t e L i n e ( s M o n t h ) ;
}
/ / И т е р и р у е м к о л л е к ц и ю с т р о к
S t r i n g C h u n k s s c = n e w S t r i n g C h u n k s ( ) ;
/ / И т е р и р у е м - в ы в о д и м т е к с т , п о м е щ а я к а ж д ы й ф р а г м е н т / / в с в о е й с о б с т в е н н о й с т р о к е
C o n s o l e . W r i t e L i n e ( " \ С т р о к и : \ п " ) ; f o r e a c h ( s t r i n g s C h u n k i n s c )
{
C o n s o l e . W r i t e L i n e ( s C h u n k ) ;
}
/ / А т е п е р ь в ы в о д и м и х в о д н у с т р о к у
C o n s o l e . W r i t e L i n e ( " \ п В ы в о д в о д н у с т р о к у : \ п " ) ; f o r e a c h ( s t r i n g s C h u n k i n s c )
{
C o n s o l e . W r i t e ( s C h u n k ) ;
}
C o n s o l e . W r i t e L i n e ( ) ;
/ / И т е р и р у е м п р о с т ы е ч и с л а д о 1 3