From: Tanaka Akira Date: 2007-08-23T16:43:28+09:00 Subject: [ruby-dev:31622] Re: {|(a)|} assigns outer local variable In article <87tzqvreqc.fsf@fsij.org>, Tanaka Akira writes: > 以下のように、ブロックパラメータの変数への束縛が以前のように > 外部のローカル変数への代入になることがあります。 今試すと、変数が外部のローカル変数への代入になることは変わり ませんが、さらに、shadowing outer local variable - a という 警告が出るようになりました。 % ./ruby -ve ' def m() yield 2 end a = 1 p a m {|(a)| p a } p a ' ruby 1.9.0 (2007-08-23 patchlevel 0) [i686-linux] -e:5: warning: shadowing outer local variable - a 1 2 2 shadow してないのに shadow したという警告が出るのはあきらか におかしい挙動です。 やはり、かっこの内外で挙動を変えるのは無理があるというしるし ではないでしょうか。 なので、かっこにかかわらず shadow してはいかがでしょうか。 あるいは、かっこの内外で挙動を変える理由が何かあるでしょうか。 -- [田中 哲][たなか あきら][Tanaka Akira]