Is there a reason not to use Python notation for literal Hash as an alternative to Ruby notation? I would like to be able to write either { 'a' => 'b', 'c' => 'd' } or { 'a' : 'b', 'c' : 'd' }, and either { :a => 'b' } or { :a: 'b' } .
I find { a: 'b' } to be a confusing alternative to { :a => 'b' }, and do not use it because of this (because it cannot be used if the key is not a symbol).
Ok. However, i was not proposing to remove the 1.9 syntax: { a: 'b' } could be a shorthand notation for { :a: 'b' }, like "#@x #@y" is a shorthand notation for "#{@x} #{@y}".
And repeating myself, when {a: 'b'} is a shorthand for {:a => 'b'},
naturally {'a': 'b'} should be {:'a' => 'b'} that is another form of
{:a => 'b'} in Ruby.
Matz, currently { 'a': 'b' } does not work in Ruby, do you propose that it be a synonym for { :a => 'b' } in a future version? If not, i do not see your point. The { a: 'b' } syntax is already exceptional, i do not think it will become even more exceptional if { :a : 'b' } for { :a => 'b' } and { 'a' : 'b' } for { 'a' => 'b' } are added.
(For me it is like omitting curly braces in the special case of interpolating an instance variable in a string: "#@x" works, but "#x" with a local variable x does not.)
In message "Re: [ruby-core:44761] [ruby-trunk - Feature #6375] Python notation for literal Hash"
on Mon, 30 Apr 2012 08:30:30 +0900, "alexeymuranov (Alexey Muranov)" redmine@ruby-lang.org writes:
|Matz, currently { 'a': 'b' } does not work in Ruby, do you propose that it be a synonym for { :a => 'b' } in a future version? If not, i do not see your point.
For non-identifier symbol, I am positive to add {"a+": "b"} as synonym for {:"a+" => "b"}.