2015-04-05 254 views
0

所以我有一个哈希:从密钥在Ruby哈希访问值

test = {"_id"=>"5516c07ba520e0066c9ac53c", "accounts"=>[], "address"=>{"zip"=>"45245", "state"=>" Ohio", "city"=>"Cincinnati", "street"=>"3320 Wagner Road"}, "first_name"=>"Black", "last_name"=>"Bart"} 

,我只是玩弄的红宝石控制台。要访问_id处的值,我认为命令应该是测试。[key]。但是我运行测试。[__id]并且不断收到错误。这看起来很简单,但我缺少一些语法。

回答

1

首先,没有.。否则,你将不得不访问像arr.[](0)这样的数组,像1.+(2)等添加数字等。为了使这更加“自然”,Ruby添加了syntaxic糖,在调用具有某些名称的方法时不需要.(例如[],+,等等。)。

其次,你没有一个名为_id的变量。你需要把它作为一个字符串传递。

puts test["_id"] 
+0

的至少是一个例外,该规则,我所知道的(有可能是其他人),即四个方法之一来调用'在拉姆达call' 'l':'l。(* args)','l'和'('之间的点是必需的(其他三种方法是'l.call(* args)','l.yield(* args) )'和'last [* args]'。) – 2015-04-05 03:34:26

0

您应该使用test["_id"]代替