multifoo sub { $_ * 2}, sub { foo ($_) }, @things;
hoopsy hoops, right?
And now the method body:
sub onefoo {
my ($reasonably_named_sub, @params) = @_;
whatever;
for my $foo (tweaked @params) {
$reasonably_named_sub->($foo);
}
}
sub multifoo {
my ($toDo, $filter, @params) = @_;
whatever;
for my $foo (grep $filter->(), tweaked @params) {
$toDo->($foo);
}
}
Yieieiaield anyone?
There is a little syntactic sugar for functions (not methods) in Perl, but the difference between using the sugar and not is tiny. If I need to pass two "pieces of code" into my subroutine, I pass them, I name them and I call them the same way I would if I had just one.
In Ruby, if your method gets a single block/closure parameter, you do not get to name the parameter, you use the ill-named statement yield and it kinda, behind the scenes, maybe, works. If you need to pass two you are, basically, screwed. But then 640KB ought to be ... I mean one block ought to be enough for anybody.
Jenda
Enoch was right!
Enjoy the last years of Rome.
|