Рассмотрим следующий простым примером:
#!perl -w
use strict;
sub max {
my ($a, $b) = @_;
if ($a > $b) { $a }
else { $b }
}
sub total {
my $sum = 0;
foreach (@_) {
$sum += $_;
}
# $sum; # commented intentionally
}
print max(1, 5) . "\n"; # returns 5
print total(qw{ 1 3 5 7 9 }) . "\n";
согласно обучению Perl (стр. 66):
«Последнее оцениваемое выражение» действительно означает последнее выражение , что Perl оценивает, а не последнее утверждение в подпрограмме.
Может ли кто-то объяснить мне, почему всего
не возвращается 25
непосредственно из Foreach
(как , если
)? Я добавил дополнительные $ Sum
как:
foreach (@_) {
$sum += $_;
$sum;
}
, и у меня есть такое предупреждающее сообщение:
бесполезное использование частной переменной в контексте пустота в ...
Однако явное использование возврата
работает как ожидалось:
foreach (@_) {
return $sum += $_; # returns 1
}