In ruby 1.9 is there a way to define this hash with the new syntax?
在ruby 1.9中,有没有一种方法可以用新的语法来定义这个散列?
irb> { a: 2 }
=> {:a=>2}
irb> { a-b: 2 }
SyntaxError: (irb):5: syntax error, unexpected tLABEL
{ a-b: 2 }
^
with the old one, it's working:
旧的,它在工作:
irb> { :"a-b" => 2 }
=> {:"a-b"=>2}
4 个解决方案
#1
3
You also can use next syntax
您还可以使用next语法
{a: 1, b: 2, 'c-c': 3, d: 4}
#2
64
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 "?".
有一些合法的符号不能与新的语法一起使用。我不能找到一个参考,但似乎象征着名字匹配/ ^[a-zA-Z_][a-zA-Z_0-9]*(! ?)?$/允许使用新的语法。最后一个字符可能是特殊字符“!”或“?”
For any symbol that does not meet these restrictions, you have to use the Ruby 1.8 syntax, :'my-symbol-name'
对于任何不满足这些限制的符号,必须使用Ruby 1.8语法:'my-symbo -name'
#3
25
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.
这可能不是你的特殊用例,但我在试图找到答案的时候发现了这个帖子,所以我想分享我的发现。
#4
22
You can combine the old and new syntax:
您可以结合新旧语法:
{a: 1, b: 2, :'c-c' => 3, d: 4}
#1
3
You also can use next syntax
您还可以使用next语法
{a: 1, b: 2, 'c-c': 3, d: 4}
#2
64
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 "?".
有一些合法的符号不能与新的语法一起使用。我不能找到一个参考,但似乎象征着名字匹配/ ^[a-zA-Z_][a-zA-Z_0-9]*(! ?)?$/允许使用新的语法。最后一个字符可能是特殊字符“!”或“?”
For any symbol that does not meet these restrictions, you have to use the Ruby 1.8 syntax, :'my-symbol-name'
对于任何不满足这些限制的符号,必须使用Ruby 1.8语法:'my-symbo -name'
#3
25
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.
这可能不是你的特殊用例,但我在试图找到答案的时候发现了这个帖子,所以我想分享我的发现。
#4
22
You can combine the old and new syntax:
您可以结合新旧语法:
{a: 1, b: 2, :'c-c' => 3, d: 4}