Ruby 1.9哈希中有一个破折号

时间:2022-05-01 22:30:20

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}