Perlについての質問箱 59箱目
■ このスレッドは過去ログ倉庫に格納されています
0041デフォルトの名無しさん
2013/07/26(金) NY:AN:NY.ANsub for_with_i {
my ($fn,@lst) = (shift, @_);
my $i = 0;
for (@lst) {
$fn->($i++, $_);
}
}
for_with_i (sub { my ($i,$elem) = @_;
print "$i: $elem\n"; },
qw(apple orange strawberry));
これが構文等を使えば
sub for_with_i2 (&@){
my ($fn,@lst) = (shift, @_);
my $i = 0;
for (@lst) {
$fn->($i++, $_);
}
}
for_with_i2 {
my ($i,$elem) = @_;
print "$i: $elem\n";
} qw(apple orange strawberry);
こう書けるようになる。
for_with_iは高階関数であり、それに渡した関数はもちろんスコープを作る。
無論構文糖なので後者もスコープを作る。
しかしXS版では作らない。これはおかしい。
■ このスレッドは過去ログ倉庫に格納されています