key in ruby new hash

て烟熏妆下的殇ゞ 提交于 2019-12-02 06:11:13

问题


There is a weird issue with Ruby 1.9.2's new hash syntax. How can I put any Object as key in hash in 1.9.2?

in 1.8.7 hash it works:

a="b" 
{"a" => "some",a => "another value",:a => "3rd value"}

But in 1.9.2 > We can't (or how can we if I'm wrong?")

1.9.2 hash:

{a: "some"} =>  {:a=>"s"} #it convert to old hash format

but

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

回答1:


In Ruby 1.9 you are allowed to put colon : only after symbols that are used as keys!

Any object can use the arrow =>, even symbols.




回答2:


To say this another way, the new feature isn't a new general hash syntax, it's a specific tweak for writing hashes where the keys are symbol literals. {a: 1} is just a shortcut for {:a => 1}, and that's all. If you have anything else as keys, you have to use the regular syntax.



来源:https://stackoverflow.com/questions/10293936/key-in-ruby-new-hash

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!