关键在ruby新哈希

时间:2012-04-24 07:56:33

标签: ruby-on-rails ruby hash ruby-1.9.2

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"}

2 个答案:

答案 0 :(得分:6)

在Ruby 1.9中,您只能在用作键的符号之后放置冒号:

任何对象都可以使用箭头=>,甚至是符号。

答案 1 :(得分:3)

换句话说,新功能不是新的通用哈希语法,它是用于编写哈希的特定调整,其中键是符号文字。 {a: 1}只是{:a => 1}的捷径,而这就是全部。如果您还有其他任何键,则必须使用常规语法。