From: Tony Arcieri Date: 2009-06-15T04:35:28+09:00 Subject: Re: each by arity --001485f8721ce2c85c046c540a39 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit On Sun, Jun 14, 2009 at 1:29 PM, Trans wrote: > I don't see how the former is ever of any use, but the later certainly > is. am i missing something obvious? > The main use I've seen is for iterating hashes, e.g.: >> {:a => 1, :b => 2, :c => 3}.map { |k, v| "#{k}=#{v}" }.join(",") => "b=2,c=3,a=1" Of course you could always massign against an incoming array, so this case is also covered by: >> {:a => 1, :b => 2, :c => 3}.map { |(k, v)| "#{k}=#{v}" }.join(",") => "b=2,c=3,a=1" The massign approach is nice with methods where you want to explode an array as arguments alongside other arguments: >> {:a => 1, :b => 2, :c => 3}.inject(0) { |n, (k, v)| n + v } => 6 Personally I'm not a fan of this mode of arity handling and think massign and splats cover all the cases where it's useful. -- Tony Arcieri medioh.com --001485f8721ce2c85c046c540a39--