>>897
試しにArrayのメソッドとして書いてみました。こんな感じ?

class Array
def each_range
self.each do | range |
if range.respond_to?( 'each' )
range.each { | value | yield value }
else
yield range
end
end
end
end

[ 1..2, 4..5 ].each_range { | i | p i }