1Sort::MergeSort::IteratUosre(r3)Contributed Perl DocumenStoartti:o:nMergeSort::Iterator(3)
2
3
4

Name

6       Sort::MergeSort::Iterator - iteration object
7

Synopsis

9         my $input = Sort::MergeSort::Iterator->new( sub { ... } );
10
11         while (<$input>) {
12         }
13
14         while (my $i = $input->next) {
15         }
16
17         my $ahead = $input->peek;
18

Description

20       This class implements a simple iterator interface for iterating over
21       items.  Just pass a code reference to the constructor that returns the
22       next value over which to iterate. Sort::MergeSort::Iterator will do the
23       rest.
24
25   FileHandle Interface
26       You can pretend that an Iterator object is a filehandle.   It doesn't
27       support all filehandle operations, but it does allow you to iterate in
28       the natural way:
29
30        while (<$input>) {
31        }
32
33   Instance Methods

Class Interface

35   Constructors
36       new
37
38         my $iter = Sort::MergeSort::Iterator->new(\&code_ref);
39         my $iter = Sort::MergeSort::Iterator->new(\&code_ref, \&destroy_code_ref);
40
41       Constructs and returns a new iterator object. The code reference passed
42       as the first argument is required and must return the next item to
43       iterate over each time it is called, and "undef" when there are no more
44       items. "undef" cannot itself be an item. The optional second argument
45       must also be a code reference, and will only be executed when the
46       iterator object is destroyed (that is, it will be called in the
47       "DESTROY()" method).
48
49       current
50
51         my $current = $iter->current;
52
53       Returns the current item in the iterator--that is, the same item
54       returned by the most recent call to "next()".
55
56       next
57
58         while (my $thing = $iter->next) {
59                 # Do something with $thing.
60         }
61
62       Returns the next item in the iterator. Returns "undef" when there are
63       no more items to iterate.
64
65       peek
66
67         while ($iter->peek) {
68                 $iter->next;
69         }
70
71       Returns the next item to be returned by "next()" without actually
72       removing it from the list of items to be returned. The item returned by
73       "peek()" will be returned by the next call to "next()". After that, it
74       will not be available from "peek()" but the next item will be.
75
76       position
77
78         my $pos = $iter->position;
79
80       Returns the current position in the iterator. After the first time
81       "next()" is called, the position is set to 1. After the second time,
82       it's set to 2. And so on. If "next()" has never been called,
83       "position()" returns 0.
84
85       all
86
87         for my $item ($iter->all) {
88                 print "Item: $item\n";
89         }
90
91       Returns a list or array reference of all of the items to be returned by
92       the iterator. If "next()" has been called prior to the call to "all()",
93       then only the remaining items in the iterator will be returned. Use
94       this method with caution, as it could cause a large number of items to
95       be loaded into memory at once.
96
97       do
98
99         $iter->do( sub { print "$_[0]\n"; return $_[0]; } );
100         $iter->do( sub { print "$_\n"; return $_; } );
101
102       Pass a code reference to this method to execute it for each item in the
103       iterator. Each item will be set to $_ before executing the code
104       reference, and will also be passed as the sole argument to the code
105       reference. If "next()" has been called prior to the call to "do()",
106       then only the remaining items in the iterator will passed to the code
107       reference. Iteration terminates when the code reference returns false,
108       so be sure to have it return a true value if you want it to iterate
109       over every item.
110

Author

112       David Wheeler <wheeler@searchme.com>
113
115       Copyright (c) 2004-2008 Kineticode, Inc. <info@kineticode.com>.
116
117       This work was based on Object::Relation::Iterator module developed by
118       Kineticode, Inc. As such, it is is free software; it can be
119       redistributed it and/or modified it under the same terms as Perl
120       itself.
121
122
123
124perl v5.34.0                      2022-01-21      Sort::MergeSort::Iterator(3)
Impressum