Ruby 1.9.2的新哈希语法存在一个奇怪的问题。如何在1.9.2中将任何Object作为密钥放入哈希?
在1.8.7哈希中它起作用:
a="b"
{"a" => "some",a => "another value",:a => "3rd value"}
但在1.9.2>我们不能(或者如果我错了怎么办?)
1.9.2哈希:
{a: "some"} => {:a=>"s"} #it convert to old hash format
但是
a="a"
{a: "..."} # This doesn't work
{"a": "some value"} => syntax error, unexpected '}', expecting $end
from /home/naveed/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>'
{1: "s"} =>
SyntaxError: (irb):11: syntax error, unexpected ':', expecting tASSOC {1: "s"}
答案 0 :(得分:6)
在Ruby 1.9中,您只能在用作键的符号之后放置冒号:
!
任何对象都可以使用箭头=>
,甚至是符号。
答案 1 :(得分:3)
换句话说,新功能不是新的通用哈希语法,它是用于编写哈希的特定调整,其中键是符号文字。 {a: 1}
只是{:a => 1}
的捷径,而这就是全部。如果您还有其他任何键,则必须使用常规语法。