2013-02-20 66 views
1
hash = {:symbol, 'mental'} 

因为我发现上面点缀着一个正在进行的项目,我无法弄清楚这是否是由于旧版本的Ruby引起的。这是有效的ruby语法吗?

+2

什么是IRB告诉你吗? – 2013-02-20 17:49:26

+0

1.9.3无效,我知道。但是我对Ruby(年)相当陌生。不过,我从来没有见过这种语法。 – 2013-02-20 17:50:03

回答

10

有效的Ruby 1.8当你有才能正确的键值对。你需要有偶数个散列创作元素:

hash = {:symbol, 'mental'}一样hash = {:symbol => 'mental'}

一些例子:

hash = {:symbol, 'mental', :name,'abc'} 
=> {:symbol=>"mental", :name=>"abc"} 

hash = {:symbol, 'mental', :name,'abc', :b} 
=> Syntax Error 
+2

这个语法看起来非常不寻常,并且因为它与1.9不兼容,所以无论它存在在哪里,都会被戳穿。 – tadman 2013-02-20 18:17:31

+0

@tadman是的,这与1.9不兼容。 1.9中哈希值的变化很多。 – codeit 2013-02-20 18:31:36

1

看起来像一个错字。我觉得行应为:

hash = {:symbol => 'mental'} 

这似乎是有效的1.8.7红宝石虽然...

+0

嗯..我想这就是为什么。项目最初是1.8。 – 2013-02-20 17:52:15