From: GOTOU Yuuzou Date: 2007-12-24T22:25:54+09:00 Subject: [ruby-dev:32708] Enumerable can't take multiple parameters eachで複数のパラメータをyieldしたときに、Enumerable#colectで、 先頭の値しか受け取れないようです。 % ruby-1.9 -v -e ' ~ class Foo include Enumerable def each {1=>2, 3=>4}.each{|k, v| yield(k, v) } end end foo=Foo.new foo.each{|k, v| p [k, v] } foo.collect{|k, v| p [k, v] } ' ruby 1.9.0 (2007-12-24 revision 0) [x86_64-linux] [1, 2] [3, 4] [1, nil] [3, nil] この影響で、RSSのテストが失敗しています。 このケースではREXML::Elemenet#eachを以下のように修正すれば希 望する動作になりますが、Enumerableの問題なのかeachを実装する 側の問題なのか判断できませんでした。 --- lib/rexml/element.rb (revision 14606) +++ lib/rexml/element.rb (working copy) @@ -1013,7 +1013,7 @@ # doc.root.attributes.each {|name, value| p name+" => "+value } def each each_attribute do |attr| - yield attr.expanded_name, attr.value + yield [attr.expanded_name, attr.value] end end -- ごとうゆうぞう