• ベストアンサー

&$_の意味がわからない

Sub MkCounter{ my $counter=0; my $inc=sub{++$counter;}; my $dec=sub{--$counter;}; return($inc,$dec); } ($i,$d)=&MkCounter; @results=map &$_,($i,$i,$i,$d,$d); print join(', ', @results), "\n"; 実行結果は 1,2,3,2,1 となるんですが、@results=map &$_,($i,$i,$i,$d,$d);の部分がよくわからないんです。&$_は何を意味しているんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

map は map 評価する式,リスト の形で用いて、(この場合はリスト(配列))で結果を返します この場合の 評価する式 &$_は、($i,$i,$i,$d,$d)の要素それぞれを関数として評価するということです。 $i,$dは、MkCounterの返す値(関数(クロージャー))ですので、 $i,$i,$iでインクリメントされて $d,$dでデクリメントされるということです。 ところで、Subはsubじゃないですか?

msndance
質問者

お礼

すいません、返事が遅れました。 やっとわかりました、ありがとうございます。 ちょっとノートに書き写してたものなんで、subはどっちか忘れましたが、たぶんsubだと思います。

関連するQ&A