まつもと ゆきひろです
In message "Re: [ruby-dev:40482] Re: バグ? ブロック引数で to_ary が呼ばれる必要のない場面で呼ばれる"
on Thu, 25 Feb 2010 00:55:49 +0900, keiju / ishitsuka.com (石塚圭樹) writes:
|元のスクリプトの 75行目あたりでの処理
|
| @c.d.each_export_by(@c.a, self) do |export, opts={}|
|
|を例外なく処理したいわけです.
|
|
|>で、ですね。この議論の後、この部分の挙動は
|>
|> * NoMethodErrorが発生し、
|> * かつ、呼び出したオブジェクトが、元となったメソッドに
|> respond_to?しない
|
|2番目が良くわからなかったのですが, この場合で言えば, 上記の式で
|
| export.respond_to?(:to_ary)
|
|がfalseになるってことです?
そういうことですね。
|たしかにその手もありますが, これだと, メソッド呼び出しの度に :to_aryの
|チェックが入るのでできれば避けたくて, to_aryのみの対応で済まないものか
|と...
えーと、気にしているのがコストだったら、それがボトルネックで
あることが明らかになってからでも遅くないと思いますが。
|to_aryを定義しておいて, さらに, E#respond_to?を以下のように定義しても
|NGなんですが...
|
|class E
| def respond_to?(method)
| if method == :to_ary
| false
| else
| super
| end
| end
|end
|
|やっぱそういうものです?
あれ? そうだっけ?