Ruby 1.9 hash with a dash in a key

后端 未结 4 1014
死守一世寂寞
死守一世寂寞 2020-12-05 12:32

In ruby 1.9 is there a way to define this hash with the new syntax?

irb> { a:  2 }
=> {:a=>2}

irb> { a-b:  2 }
SyntaxError: (irb):5: syntax erro         


        
相关标签:
4条回答
  • 2020-12-05 13:09

    You can combine the old and new syntax:

    {a: 1, b: 2, :'c-c' => 3, d: 4}
    
    0 讨论(0)
  • 2020-12-05 13:15

    As of Ruby 2.2, you also can use following syntax:

    {a: 1, b: 2, 'c-c': 3, d: 4}
    
    0 讨论(0)
  • 2020-12-05 13:21

    To use dashes with the new syntax:

    <%= link_to "Link", link_path, {data: {something: 'value1', somethingelse: 'value2'}} %>
    

    This will generate:

    <a href="/link" data-something='value1' data-somethingelse='value2'>Link</a>
    

    This might not exactly be your particular use case, but I found this post while trying to find an answer myself so I thought I'd share my findings.

    0 讨论(0)
  • There are some legitimate symbols that cannot be used with the new syntax. I cannot find a reference, but it appears that a symbol name matching /^[a-zA-Z_][a-zA-Z_0-9]*[!?]?$/ is allowed with the new syntax. The last character may be the special character "!" or "?".

    For any symbol that does not meet these restrictions, you have to use the Ruby 1.8 syntax, :'my-symbol-name'

    0 讨论(0)
提交回复
热议问题