イテレーター

イテレーターと普通のループとどう違うのかがイマイチ分かってなかった。んで本を読んでたら

イテレーターというのは、制御構造を関数として提供するものだ。・・・ループは関数の中に隠れており<・・・

とあって

def myeach(ary)
  for val in ary
    yield val
  end
end

ary = [0, 1, 2]
myeach(ary){|i| print i  , "\n"}

というrubyのコードと

sub myeach{
    my ($ary , $sub) = @_;
    foreach (@$ary){
        &$sub($_);
    }
}

my $ary = [0, 1, 2];
my $sub = sub{
        my ($i) = @_;
        print "$i\n";
    };

myeach $ary , $sub;

というPerlのコードを読んで、ようやく皮膚感覚で理解できた。なるほげ。抽象化ってのはすばらしいものですね。


PerlユーザーのためのRuby入門

PerlユーザーのためのRuby入門