[ruby-list:49262] Re: forループ内の変数のスコープに関して

From: Shugo Maeda <shugo@...>
Date: 2013-03-08 01:36:31 UTC
List: ruby-list #49262
前田です。

2013年3月6日 15:49 村上 友洋 <tomohiroz@icloud.com>:
> ruby 1.9.3p392では上手くいきました。
> ただruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]ではforループと同様の結果になってしまいました。
> バージョンアップの際にこの辺が改善されたようですね。

-wオプションを付けると警告が出るように、メソッドローカル変数と同名のブロックパラメータを
使用することはあまり推奨されていません。

$ ruby -vwe 'x = 123; 1.times {|x| p x }; p x'
ruby 1.9.3p375 (2013-01-18 revision 38876) [i686-linux]
-e:1: warning: shadowing outer local variable - x
0
123

このようなコードは可読性が低くなりますので個人的にはお勧めしませんが、他の箇所から
コピー&ペーストしてたまたま名前がぶつかった場合に便利だという意見もあり、現在の挙動
になっています。
# 私はCLUみたいにエラーにするべきだと主張してたんですが…。

In This Thread