Using Ruby 2.3:
In example 1, the string key "a" is automatically converted to a symbol, whereas with example 2, it stays a string.
"a"
Example 1
{"a": 1} # => {:a=>1}
Example 2
{"a"=>"c"} # => {"a"=>"c"}
I thought : was the same as the old style hash rocket => syntax. What is going on? Why have I never noticed this in Rails? Is it the HashWithIndifferentAccess that is obscuring this?
:
=>
HashWithIndifferentAccess
In Ruby 2.3(.0), these are all the same:
{:"a" => 1} {"a": 1}, {:a => 1} {a: 1}
They all translate to the same thing: a is a symbol in all these cases.
a
{"a"=>1} is different: a is a string in this case.
{"a"=>1}
1.4m articles
1.4m replys
5 comments
57.0k users