在ruby1.9中,有没有一种方法可以用新的语法来定义这个散列呢?
irb> { a: 2 }
=> {:a=>2}
irb> { a-b: 2 }
SyntaxError: (irb):5: syntax error, unexpected tLABEL
{ a-b: 2 }
^
对于旧的版本,它是有效的:
irb> { :"a-b" => 2 }
=> {:"a-b"=>2}
发布于 2016-10-27 15:45:08
从Ruby 2.2开始,您还可以使用以下语法:
{a: 1, b: 2, 'c-c': 3, d: 4}
发布于 2010-01-26 03:09:36
有一些合法的符号不能与新语法一起使用。我找不到引用,但新语法似乎允许使用与/^[a-zA-Z_][a-zA-Z_0-9]*[!?]?$/
匹配的符号名称。最后一个字符可以是特殊字符"!“或"?“。
对于不满足这些限制的任何符号,必须使用Ruby1.8语法:'my-symbol-name'
发布于 2012-07-19 07:45:31
要在新语法中使用短划线:
<%= link_to "Link", link_path, {data: {something: 'value1', somethingelse: 'value2'}} %>
这将生成:
<a href="/link" data-something='value1' data-somethingelse='value2'>Link</a>
这可能不是你的特殊用例,但我在自己寻找答案的时候发现了这篇文章,所以我想我应该分享我的发现。
https://stackoverflow.com/questions/2134702
复制相似问题