From: GOTOU Yuuzou Date: 2007-12-25T02:37:26+09:00 Subject: [ruby-dev:32714] Re: Enumerable can't take multiple parameters In message , `Yukihiro Matsumoto ' wrote: > |この影響で、RSSのテストが失敗しています。 > |このケースではREXML::Elemenet#eachを以下のように修正すれば希 > |望する動作になりますが、Enumerableの問題なのかeachを実装する > |側の問題なのか判断できませんでした。 > > 個人的にはeachは複数の値をyieldすべきではないと考えて上のよ > うな定義にしています。が、理論重視派でも意固地になっているわ > けでもないので、実用的なメリットがあるのであれば(今ならばま > だ)変更することにやぶさかではありません。 現在の動作は、Enumerableの仕様として納得できるのですが、 REXML::Attributesの例のようにHashをラップするクラスを作る時 は、つい、 def each @hash.each do |k, v| yield(k, v) end end このように書いてしまいそうな気がします。この時、 * eachだけは意図した通りに動いてしまう * Enumerableのメソッドを呼び出しても値が渡って来ないだけで とりあえず動いてしまう * 異常に気づいても何らかの示唆がないと原因(yeildの呼び出し 方)までたどり着くのに苦労しそう というのはなんとなく不便な気がするので、複数のパラメータを受 け取るのが無難ではないでしょうか。 -- ごとうゆうぞう