Issue #9047 has been updated by jamonholmgren (Jamon Holmgren).


I would be okay with your idea, Rodrigo, although it's less consistent (if you look at my first code block in the description). It would result in symbols looking like this:

 {
   :'symbol': 'v'
 }

Not the end of the world, though. Would you then also allow other literals to use the colon, not just strings / symbols?

 {
   [ 1, 2, 3 ]: 'v'
 }

I realize these are edge cases, but it's worth considering.






----------------------------------------
Feature #9047: Alternate hash key syntax for symbols
https://bugs.ruby-lang.org/issues/9047#change-42575

Author: jamonholmgren (Jamon Holmgren)
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 


=begin

In Ruby, if you can create a symbol with ((|:"symbolname"|)), it seems consistent to allow moving the colon to the right side in a hash and dropping the hash rocket (=>).


 {
   :str => "v",   # symbol
   str: "v",      # symbol
   :"str" => "v", # symbol
   "str": "v",    # should also be a symbol
 }
 
 
It would look like this:

 h = {
   "mykey": "value",
   "otherkey": "othervalue",
   regular_symbol: "value"
 }

String and other non-symbol keys would retain the hash rocket syntax to avoid ambiguity.

 {
   "string" => "v",
   MyObj.new => "v",
   @my_var => "v"
 }

Thoughts?

=end


-- 
http://bugs.ruby-lang.org/