Loop weirdness

> def categorise(items)
> items.inject() do |a, item|
> ary = a.assoc(item[:num]) || (a << [item[:num], ]).last
> ary.last << item[:foo]; a
> end.map{|k, v| {:num => k, :items => v}}
> end

That's pretty slick :). One question though:

The docs say Array#map only yeilds on value: the value of the item in
the array. However, you are using two in your block. I
understand (from
looking at the code), that this assigns each value in the
item array to
k and v respectively, but how does that work? Is there any docs about
that anywhere?

that's the way multiple assignement works in ruby

a, b = 1, 2

a, b = [1, 2]

is equivalent (at least for this purpose).

map yields arrays of two elements in this case and I'm assigning them to
two variables.

cheers

Simon