Brian Candler wrote: > I don't think so: > > class Foo > define_method(:foo) { |a,(b,c)| p a,b,c } > end > > Foo.new.foo(1,2,3) rescue(puts "pants") # => pants > Foo.new.foo(1,[2]) rescue(puts "pants") # => pants > Foo.new.foo(1,[2,3,4]) rescue(puts "pants") # => pants > > You must pass exactly two arguments to #foo, which by my understanding of > arity means the arity is 2. But the second argument must be an Array with > exactly two elements. I think arity is nearly meaningless when argument lists perform masgn-like array spreading. I also think we may be overthinking the args thing a bit; the use case Yehuda illustrated would only include the straightforward args cases. - Charlie