2012-07-30 47 views
0

我仍然在學習Ruby,我有一個關於散列哈希的問題。哈希波紋管是我想訪問的:在紅寶石中使用散列哈希

reserved_instance_price = [ 
           'us-east-1' => ['t1.micro' => 0.02, 'm1.small' => 0.08, 'm1.medium' => 0.160 ], 
           'us-west-1' => ['t1.micro' => 0.02, 'm1.small' => 0.08, 'm1.medium' => 0.160 ], 
           'eu-west-1' => ['t1.micro' => 0.02, 'm1.small' => 0.085, 'm1.medium' => 0.170 ] 
          ] 

我的問題:這是正確的方式來實現紅寶石散列哈希?以及如何訪問特定的值?

謝謝

+0

你能解釋一下多一點有關你想要做什麼? – varatis 2012-07-30 21:22:39

回答

2

[]語法是爲數組。爲了構建哈希使用{}

你的榜樣成爲

reserved_instance_price = { 
           'us-east-1' => {'t1.micro' => 0.02, 'm1.small' => 0.08, 'm1.medium' => 0.160 } 
} 

爲了訪問一個特定的值簡單地做

reserved_instance_price['us-east-1']['t1.micro']將返回0.02

如果你想你的索引是符號,而不是字符串(因此沒有 - 和。),您也可以使用語法

h = { useast1: {t1micro: 0.02}} 

訪問變得

h[:useast1][:t1micro] 
+0

謝謝你的回答。事實上, '美東-1' 和 't1.micro' 存儲在變量,但是當我嘗試reserved_instance_price [availability_zone] [INSTANCE_TYPE] 我得到的錯誤:未定義的方法'[]」的零:NilClass(NoMethodError) – PapelPincel 2012-07-30 21:47:49

+1

假設reserved_instance_price存在,這可能是因爲'''reserved_instance_price [availability_zone]'''返回'''nil'''(即,存在在'''reserved_instance_price'''沒有密鑰的''值匹配'availability_zone ''') – 2012-07-30 21:57:28

+0

謝謝保羅卡薩雷託:) – PapelPincel 2012-07-30 22:27:57