Как работают замыкания в Perl?
Новичок в Perl снова здесь, пытаясь понятьclosure
в перл.
Так вот's пример кода, который я неТ понять:
sub make_saying {
my $salute = shift;
my $newfunc = sub {
my $target = shift;
print "$salute, $target!\n";
};
return $newfunc; # Return a closure
}
$f = make_saying("Howdy"); # Create a closure
$g = make_saying("Greetings"); # Create another closure
# Time passes...
$f->("world");
$g->("earthlings");
Итак, мои вопросы:
Если переменная назначена функции, является ли она автоматически ссылкой на эту функцию?В приведенном выше коде я могу написать$f = \make_saying("Howdy")
вместо? И когда я могу использовать&
потому что я пытался использовать это при передаче параметров (&$f("world")
) но это нет работа.и, наконец, в этом коде выше, как он ** сделал словаworld
а такжеearthlings
добавить к словамhowdy
а также .greetings
Примечание: я понимаю, что $ f в некоторой степени связан с функцией с параметромhowdy
чтобы'мое понимание того, какworld
получил добавленный. Что я не делаюЯ понимаю, что это вторая функция внутри. Как этот управляет своей магией. Извини, я правда нене знаю, как спросить это.