1 # <a name="Package <code>TWiki::_ListIterator="></a> Package =TWiki::ListIterator
7 <li><a href="#Package =TWiki::_ListIterator="> Package TWiki::ListIterator</a><ul>
8 <li><a href="#new(\@list)"> new(\@list)</a></li>
9 <li><a href="#hasNext() -> $boolean"> hasNext() -> $boolean</a></li>
10 <li><a href="#next() -> $data"> next() -> $data</a></li>
16 ## <a name="new(\@list)"></a> new(\\@list)
18 Create a new iterator over the given list. Designed primarily for operations over fully defined lists of object references. The list is not damaged in any way.
20 ## <a name="hasNext() - $boolean"></a> hasNext() -> $boolean
22 Returns false when the iterator is exhausted.
24 my $it = new TWiki::ListIterator(\@list);
25 while ($it->hasNext()) {
28 ## <a name="next() - $data"></a> next() -> $data
30 Return the next entry in the list.
32 The iterator object can be customised to pre- and post-process entries from the list before returning them. This is done by setting two fields in the iterator object:
34 - `{filter}` can be defined to be a sub that filters each entry. The entry will be ignored (next() will not return it) if the filter returns false.
35 - `{process}` can be defined to be a sub to process each entry before it is returned by next. The value returned from next is the value returned by the process function.
39 my @list = ( 1, 2, 3 );
41 my $it = new TWiki::ListIterator(\@list);
42 $it->{filter} = sub { return $_[0] != 2 };
43 $it->{process} = sub { return $_[0] + 1 };
44 while ($it->hasNext()) {