ここでも Perl の初心者で、Perl で理解しようとしていclosureます。
だからここに私が理解していないコードの例があります:
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私が理解していないのは、内部の2番目の機能です。あれがどのようにその魔法を操作するか。申し訳ありませんが、この質問の仕方がわかりません。