2012-07-30 4 views
0

저는 Ruby를 배우고 있으며 해시 해쉬에 관한 질문이 있습니다.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

답변

2

[] 구문은 배열을위한 감사합니다. 당신은 문자로 당신의 인덱스를 좋아하기보다는 할 경우 해시가 단순히

reserved_instance_price['us-east-1']['t1.micro']

어떤 0.02

를 반환 할 {}

귀하의 예제는 특정 값에 액세스하기위한

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

을하게 사용 구성하려면 문자열 (따라서 - 및.)이 없으면 구문을 사용할 수도 있습니다.

,210
h = { useast1: {t1micro: 0.02}} 

액세스

h[:useast1][:t1micro] 
+0

해답을 가져 주셔서 감사합니다. 사실, 'us-east-1'과 't1.micro'는 변수에 저장되어 있지만 예약 된 인스턴스를 확인하려고하면 [availability_zone] [instance_type] 오류가 발생합니다. 정의되지 않은 메서드'[] 'for nil : NilClass (NoMethodError) – PapelPincel

+1

reserved_instance_price가 있다고 가정하면 아마'''reserved_instance_price [availability_zone]''''''nil''을 반환하기 때문입니다 (즉,'''reserved_instance_price'''에''availability_zone ''') –

+0

Paulo Casaretto 감사합니다. – PapelPincel