Apply a callback to an array: Difference between revisions

Line 366:
[[Category:Perl]]
 
<highlightSyntax language=perl>
# create array
# create array
my @a = (1, 2, 3, 4, 5);
 
my @a = (1, 2, 3, 4, 5);
# create callback function
sub mycallback {
return 2 * shift;
}
 
# create callback function
# use array indexing
sub mycallback {
my $i;
return 2 * shift;
for ($i = 0; $i < scalar @a; $i++) {
}
print "mycallback($a[$i]) = ", mycallback($a[$i]), "\n";
}
 
# use array indexing
# using foreach
my $i;
foreach my $x (@a) {
for ($i = 0; $i < scalar @a; $i++) {
print "mycallback($x) = ", mycallback($x), "\n";
print "mycallback($a[$i]) = ", mycallback($a[$i]), "\n";
}
}
 
# using foreach
# using map (useful for transforming an array)
foreach my $x (@a) {
my @b = map mycallback($_), @a; # @b is now (2, 4, 6, 8, 10)
print "mycallback($x) = ", mycallback($x), "\n";
}
 
# using map (useful for transforming an array)
# and the same using an anonymous function
my @cb = map { mycallback($_ * 2 }), @a; # @cb is now (2, 4, 6, 8, 10)
</highlightSyntax>
 
# and the same using an anonymous function
<highlightSyntax language=perl>
# use a callback stored in a variable my @c = map { $_ * 2 } @a; # @c is now (2, 4, 6, 8, 10)
</highlightSyntax>
my $func = \&mycallback;
 
my @d = map &{$func}($_), @a; # @d is now (2, 4, 6, 8, 10)
</highlightSyntax language=perl>
# use a callback stored in a variable
my $func = \&mycallback;
my @d = map &{$func}($_), @a; # @d is now (2, 4, 6, 8, 10)
</highlightSyntax language=perl>
 
==[[PHP]]==
Anonymous user