2012-10-17 4 views
1

Ruby의 "each"문에서 데이터에 액세스하는 데 문제가 있습니다. 나는 Ruby에서 배열의 데이터 액세스

parent_map = {} 
current = 1 

# for each loop is here that populates parent_map 

parent_map[current] = { issues_map[relation.destination_bug_id] => issues_map[relation.source_bug_id] } 
current += 1 

# for each loop is here that populates parent_map 

가 그럼 난에서 데이터를 읽으려고,
mysql> select * from mantis_bug_relationship_table WHERE relationship_type = 2 AND destination_bug_id = 753; 
+-----+---------------+--------------------+-------------------+ 
| id | source_bug_id | destination_bug_id | relationship_type | 
+-----+---------------+--------------------+-------------------+ 
| 103 |   765 |    753 |     2 | 
+-----+---------------+--------------------+-------------------+ 

가 그럼 난 2의 relationship_type이 때문에 같은 배열에 각 결과를 추가, SQL 쿼리에서 데이터를 잡는거야 parent_map는 다음과 같이

parent_map.each do |child, parent| 
    pp parent_map 
    print "child: #{child}\n" 
    print "parent: #{parent}\n" 
    print "---------------------------------------\n" 
    STDOUT.flush 
    end 

다음이 출력 :

{1=>{753=>765}} 
child: 1 
parent: 753765 

출력은 다음과 같아야합니다

child: 753 
parent: 765 

는 어떻게 자녀와 부모에 액세스 할 수 하죠?

+0

이미 자녀와 학부모에게 액세스하고 있습니다. 당신이 정확히 그걸로 무엇을하려고합니까? 기대하고있는 입력과 출력을 제공 할 수 있습니까? – Deepak

+0

출력 내용을 내 질문에 편집했습니다. parent_map에 데이터를 추가 할 때 기본적으로 { '753'> = '765'}이 (가) 추가됩니다. – ethree

답변

3

실제로 배열에서가 아니라 예제에서 해시를 처리하고 있습니다.

array = [] 
hash = {} 

parent_map.each 루프에서 키와 값을 가져옵니다. 키는 초기 모집단 루프의 current 변수로 채워지는 반면 값은 액세스하려는 부모 및 자식이 포함 된 해시이기도합니다. 이 일을해야

parent_map.each do |key, val| # This val is your hash: {753=>765} 
    val.each do |child, parent| 
    puts "child: #{child}" # 753 
    puts "parent: #{parent}" # 765 
    end 
end 
+0

감사합니다! <3. 매우 감사. – ethree

0
parent_map.each do |current, issues_hash| 
    issues_hash.each do |key, value| 
    print "child: #{key}\n" 
    print "parent: #{value}\n" 
    end 
end 

:

당신이 당신의 가치를있는 해시 원하는 가정하면, 하위 루프, ALA가 필요합니다.

2

다른 답변과 같이 중첩 루프가 필요하지 않습니다. 두 번째 매개 변수를 가져 와서 분해합니다.

parent_map.each do |_, (child, parent)| 
    pp parent_map 
    puts "child: #{child}" 
    puts "parent: #{parent}" 
    puts "---------------------------------------" 
    STDOUT.flush 
end 
+0

끝내 주면, 나는 네가 할 수 있다는 것을 몰랐다. 밑줄은 키를 변수에 할당하는 것을 건너 뛰는가? – agmin

+2

예. Underscore는 사용되지 않는 변수를받는 규칙입니다. – sawa

+0

@sawa 어쨌든 이유가 없다면 나를 위해 작동하지 않습니다. – Viren