2013-04-19 5 views
0

나는 interwebs의 모든 곳에서 해시 내의 배열에 액세스하는 방법을 찾을 수없는 것처럼 보입니다. 반복 할 수있는 많은 방법과 평평하게 접근 할 수 있지만 평범한 액세스가 불가능합니다. 지금배열의 Ruby 해시 값 검색하기

hash = Hash.new() 
data1 = "foo" 
data2 = "bar" 
hash["foobar"] = {data1, data2} 

이 모든 작품 어떻게 액세스 할 수있는 해시 내에서 데이터 1과 데이터 2 개별적으로?

hash["foobar"][0]foo을 출력해야한다고 생각했지만 nil을 반환합니다.

참고 : 해시의 모든 배열에는 정확히 2 개의 요소가 있습니다.

나는 대답이 단순한 1 개의 라이너라는 것을 알고있다. 나는 그것을 찾을 수없는 것 같다.

+1

참고 : Ruby는'{...} '(해시 리터럴)과 달리 배열 리터럴에'[...]'을 사용합니다. 이 문제 (코드의 마지막 줄)를 수정하면 문제를 해결하는 데 도움이 될 수 있습니다. – michaelb958

+0

유레카! 그랬어! 내가 갔던 모든 사이트는 중괄호를 사용하고있었습니다. – AnthonyW

+0

답변으로 추가하겠습니다. – michaelb958

답변

2

내가 질문에 댓글을 달았을 때, 배열 리터럴은 대괄호 [ ]이고 중괄호는 { }이 아닙니다. 당신의 마지막 줄을 변경합니다. 문자 해시 더 0 키 없었기 때문에

hash["foobar"] = [data1, data2] 

이 (당신은 아마도 전무지고 있었다를 테스트 here, 분명히 => (* 전율 *) 역할을 할 수 있음을 알 수 있으므로 iteral이었다 {data1 => data2}과 같습니다.