El Constructor del Iterador

El código del constructor iterator retorna la subrutina de iteración. Esta última controla el agotamiento de la lista en la línea 9. En tal caso se vuelve a iniciar el contador ($next = $from-$step) y se retorna undef (obsérvese el uso de la coma).

lhp@nereida:~/Lperl/src$ cat -n iterators.pl
 1  use strict;
 2
 3  sub iterator {
 4    my ($from, $to, $step) = @_;
 5    $step = 1 unless defined($step);
 6    my $next = $from-$step;  # iniciar contador
 7    my $closure_ref = sub {
 8      $next += $step;
 9      $next = $from-$step, return if $next > $to;
10      $_[0] = $next;
11      return 1;
12    };
13    return $closure_ref;
14  }

Casiano Rodríguez León
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19