2011-01-30 3 views
1
puts WINNING_ROWS.each{ |solution| "[ #{solution.map{ |space| "#{space}"}} ]"} 

위와 같은 작업을 시도했지만 나중에 각 줄마다 새 줄 문자가 나열됩니다. Ruby : 2D 배열을 어떻게 인쇄하나요?

내가 출력을 얻으려고 :

[stuff,in,row,1] 
[stuff,in,row,2] 
etc 

답변

2

하나는 이런 식으로 뭔가를 할 수 :

WINNING_ROWS = [[1,2,3],[4,5,6]] 
WINNING_ROWS.map { |x| x.inspect }.join("") 

당신이

7

을이 단지 디버깅을위한 경우, 일반적인 방법으로는 말을하는 것입니다 중 하나

p expression 

또는

puts expression.inspect 

. .. 똑같은거야.

pp을 사용할 수도 있습니다.

require 'pp' 
pp expression 

pp(expr) 
+1

.inspect이 SOOOO 유용 요청에 따라 당신에게 형식의 문자열을 얻을 것이다

당신은 아마 뭔가를 원한다. .. 이런. – NullVoxPopuli

+0

@DerNalia 스택 오버플로 오버플로 오버플로 오버플로? –

1

사용자는 배열의 to_s 기본값을 사용합니다. #each는 배열 자체를 반환합니다. 그래서 당신이하는 일은 WINNING_ROWS를 넣는 것과 같습니다. 또한, puts는 마지막에 개행을 추가하므로, puts와 같은 커널 모듈에서는 사용할 수 없기 때문에 쓰기를 사용해야하는 경우에는 STDOUT 출력에서 ​​직접 호출해야합니다.).

WINNING_ROWS = [[1,2,3],[4,5,6]] 
WINNING_ROWS.each {|row| STDOUT.write row.inspect } 

=> [1, 2, 3][4, 5, 6] 

# or this may work for you as well 
# STDOUT.write WINNING_ROWS.inspect 
관련 문제