ここでも 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番目の機能です。あれがどのようにその魔法を操作するか。申し訳ありませんが、この質問の仕方がわかりません。