> |The findings of fact (well, OK, my opinion) are these: > | > |*array is only allowed at the end of arrays because it's implemented as a hack. > > This is a false assumption. The reason is it's not encouraged. If > you need array expansion in the middle of arguments, there must be > something wrong, perhaps in method argument design. Yes, but sometimes you don't design the method, and expansion is useful to encapsulate arguments. For example, this is what I tried to do some weeks ago, and seemed very natural: == class Point attr_accessor :x, :y def initialize x=0,y=0 @x=x; @y=y end def to_a [@x, @y] end end p1=Point.new(5,4) p2=Point.new(10,10) # now I have a 'line' method, from an external library, defined as: # def line x1, y1, x2, y2, attrs line(*p1, *p2, attrs) # parse error == Isn't this more clear and natural and mantainable and easy than line(p1.x, p1.y, p2.x, p2.y, attrs) ?