perlsub
& をプロトタイプに書いてやれば呼出元の sub を省略できるよと聞いたことがあるのでやってみた
sub each(&@) {
my($block, @array) = @_;
foreach (@array) {
&$block($_);
}
}
each {
dump $_;
} 1, 2, 3; #=> syntax error at foo.pm line n, near "}"うまくいかない。
sub mygrep (&@) mygrep { /foo/ } $a, $b, $c何が違うんだろう。try catch の例は実行できる。うーんんんんんんんんんん
sub each {
my($block, @array) = @_;
foreach (@array) {
&$block($_);
}
}
each(sub {
print $_;
}, 1, 2, 3); #=> Type of arg 1 to each must be hash (not list) これもうまくいかない。えぇえ
package Array;
use strict;
use warnings;
sub new {
my($class, @array) = @_;
bless {
native => ¥@array,
}, $class;
}
sub each($&) {
my($self, $block) = @_;
foreach (@{$self->{native}}) {
&$block($_);
}
}
package main;
use P;
my $foo = Array->new(1, 2, 3);
$foo->each(sub {
dump $_
});これはうまくいく。わかんなすぎる。驚き最大の法則