From: Yukihiro Matsumoto Date: 2010-02-02T17:21:24+09:00 Subject: [ruby-dev:40294] Re: Array#flatten の仕様変更? まつもと ゆきひろです In message "Re: [ruby-dev:40292] Re: Array#flatten の仕様変更?" on Tue, 2 Feb 2010 08:23:40 +0900, Hidetoshi NAGAI writes: |動かなくなっていたのは,flatten が呼ばれる配列の中に |widget object が含まれている場合で,NameError で止まってました. なるほど。NoMethodErrorしか捕捉していませんからね。 |# widget object では,知らないメソッドに対しては |# 所有しない属性の参照/操作メソッドを呼ぼうとしていると解釈して, |# 名前の響きで NameError を返すようにしていたのだと思います. | |変更については,widget object の method_missing において |to_ary と to_str の場合は NoMethodError となるように変更しました. |仕様変更にはなるのですが,この程度であれば, |おっしゃる通り問題にはならないだろうと思いますので, |ext/tk/lib/tk.rb の commit を済ませてしまいました. | |お騒がせしてすみませんでした. いえ、それは構いませんが、to_strとto_aryに限らず、「知らない メソッド」に対しては、常にNoMethodErrorを返すべきなんじゃない でしょうか。通常のオブジェクトの振る舞いにあわせておいた方が 問題が少ないと思います。