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

From: KOSAKI Motohiro <kosaki.motohiro@...>
Date: 2013-03-08 01:45:33 UTC
List: ruby-list #49263
(3/7/13 8:36 PM), Shugo Maeda wrote:
> 前田です。
> 
> 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

Prev Next