Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Omission of curly braces for a hash in an array

I realized that the curly braces for a hash can be omitted if it is the last element in an array. For example, the forms:

[1, 2, 3, :a => 'A', :b => 'B']
[1, 2, 3, a: 'A', b: 'B']

seem to be identical to:

[1, 2, 3, {:a => 'A', :b => 'B'}]
[1, 2, 3, {a: 'A', b: 'B'}]

I knew this kind of omission is possible for arguments of a method, but had not noted it is possible for an array. Is my understanding of this rule correct? And, is this described somewhere?

like image 888
sawa Avatar asked Feb 17 '12 19:02

sawa


1 Answers

This would seem to be a new feature of 1.9:

$ rvm use 1.8.7
$ irb
ruby-1.8.7-p352 :001 > x = [ 1,2,3,:a => 4, :b => 5 ]
SyntaxError: compile error
(irb):1: syntax error, unexpected tASSOC, expecting ']'
x = [ 1,2,3,:a => 4, :b => 5 ]
                 ^
  from (irb):1
ruby-1.8.7-p352 :002 > exit
$ rvm use 1.9.3
$ irb
ruby-1.9.3-p0 :001 > x = [ 1,2,3,:a => 4, :b => 5 ]
 => [1, 2, 3, {:a=>4, :b=>5}] 
ruby-1.9.3-p0 :002 >
like image 139
davetron5000 Avatar answered Nov 15 '22 10:11

davetron5000