2014-10-09 3 views
-1

나는이와 루비에서 중첩 된 해시의 무리를 통해 반복 해요 : 출력과해시를 반복 해시 인쇄 하시겠습니까?

@data.each do |key, value| 
    puts "Key: #{key}" 
    puts "Value: #{value}" 
end 

: 그 마지막 줄이 인쇄 된 이유

Key: 1.0 
Value: {"label"=>"Default Label"} 
{"1.0"=>{"label"=>"Default Label"}} 

지금 난 정말 이해가 안 돼요. 루프에서 두 개의 "puts"호출을 제거하면 인쇄됩니다. 이 문제는 온라인에서 찾았지만 아무 것도 찾을 수 없었습니다. 어쨌든 나는 이것을 막을 수 있습니까? 아니면 해쉬에서 "각"호출을 오해하고 있습니까?

+0

다른 곳에 'puts'가 있어야합니다. – rohit89

+0

당신은 REPL에 있습니까? –

+0

@ rohit89 나는 지금 당장 10 번 내 코드를 다 읽고, 내가 필요로하는 것 이상으로 모든 것을 "넣는다"는 것을 주석으로 처리하고있다. 그리고 여전히 나타난다. – AreusAstarte

답변

7

당신은 REPL에서 이것을하고 있습니다.

REPL은 기본적으로 실행 된 마지막 명령문의 값을 반환 (및 인쇄)합니다.

이 경우 each입니다. 반복되는 컬렉션을 반환하므로 원본 해시를 볼 수 있습니다.

+2

"REPL"이라는 용어에 익숙하지 않은 독자가 [Read, Eval, Print Loop] (http://en.wikipedia.org/wiki/Read%E2%80)을 의미합니다. % 93eval % E2 % 80 % 93print_loop). 루비에서는 일반적으로 IRB 또는 PRY를 참조합니다. –

+0

나는 REPL에 들어가면 안된다. Sublime 텍스트에서 실행되는 스크립트의 일부입니다. 숭고한 텍스트가 재미있는 것을하지 않는다면 말입니다. 실제로 터미널에서 스크립트를 실행해도 똑같습니다. – AreusAstarte

+0

@AreusAstarte 출력을 만들지 않으면 출력되지 않습니다. REPL 또는 이와 동등한 환경에 있다면 명시 적으로 요구하지 않는 출력 만 볼 수 있습니다. 이 작업을 실제로보고 있다면 독립 실행 형 스크립트로 복제하는 것이 쉬워야합니다. 전체적으로 게시 할 수 있습니다. –

관련 문제