On Feb 10, 2010, at 16:36 , Albert Schlef wrote:

> Ryan Davis wrote:
>> Array[...] is, as you point out in the comment, a 
>> method invocation to Array::[](*items).
> 
> I don't think so. Array() is a method of the Kernel module. So, I think, 
> `Array[1,2,3]` equals `Array( [1,2,3] )`.

If there is one thing I know about ruby, it's the damn grammar. :P

% echo "Array[1,2,3]" | parse_tree_show 
s(:call,
 s(:const, :Array),
 :[],
 s(:arglist, s(:lit, 1), s(:lit, 2), s(:lit, 3)))

Ruby's syntax allows you to not use "." for [] and []=, which is why we can do things like my_hash[key] or my_array[42] = 24 instead of my_hash.[](key) or my_array.[]=(42, 24). Classes are objects too and subject to the same syntactical rules.