George Ogata
3/14/2006 10:07:00 AM
"Paul Battley" <pbattley@gmail.com> writes:
> I'd also add
> * If appropriate, inspect the arity of the block and provide the
> requested number of parameters.
>
> Hash#each's behaviour is a good example:
> hash = {:a=>1, :b=>2}
> hash.each { |x| p x }
> # [:b, 2]
> # [:a, 1]
> hash.each { |k,v| puts "#{k.inspect} => #{v.inspect}" }
> # :b => 2
> # :a => 1
You don't need to -- just yield the array.
irb(main):001:0> class C
irb(main):002:1> def each
irb(main):003:2> yield [1,2]
irb(main):004:2> yield [3,4]
irb(main):005:2> end
irb(main):006:1> end
=> nil
irb(main):007:0> C.new.each{|a| p a}
[1, 2]
[3, 4]
=> nil
irb(main):008:0> C.new.each{|a,b| p [a,b]}
[1, 2]
[3, 4]
=> nil