クロージャ

クロージャ

無名関数のこと。無名関数は,関数が生成された時点のレキシカル変数を保持し続ける。この作用を変数のバインド?という。以下の例は,レキシカル変数$fooがブロックを抜けているにもかかわらず値を保持し続ける例である。

my $sub_ref;

{
  my $foo = 'hoge';
  $sub_ref = sub {
    return $foo;
  };
} # 通常ならこの時点で$fooは消滅してメモリに返される

print $sub_ref->(); # hoge

* はてなダイアリーキーワード:クロージャ