Perlについての質問箱 25箱目
■ このスレッドは過去ログ倉庫に格納されています
0225デフォルャgの名無しさん
2006/06/11(日) 21:37:46すんません、俺もよくわかりません。
my $total_size = 0;
find(sub { $total_size += -s if -f }, "."};
print $total_size, "\n";
>変数$total_sizeが無名
>サブルーチンのスコープの外部で宣言されているにも
>かかわらず、この無名サブルーチンは変数にアクセス
>しています。
>本来なら直接アクセスできない変数
>にアクセスでき
外部で宣言されたmy変数にアクセスできるのは当たり前だと思うのです。
スコープの内側ならサクセスできないけど、なんで自分より外のmyにアクセスできると変なのかわからないです。
find関数の内部実行って意味の話なのかな?
これはリファレンスが送られるから、find関数で値は参照されますが…。
クロージャのスコープは定義した場所で決定して、実行場所とは関係ないから参照できて当たり前と思うのです。
ごめん、なんか問題の意味すらよくわからなくなった orz
■ このスレッドは過去ログ倉庫に格納されています