Ruby: как распечатать двумерный массив? - PullRequest
1 голос
/ 30 января 2011
puts WINNING_ROWS.each{ |solution| "[ #{solution.map{ |space| "#{space}"}} ]"}

Я попытался сделать выше, но он просто перечисляет каждое значение с новой строкой char потом.

Я пытаюсь получить вывод:

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

Ответы [ 3 ]

7 голосов
/ 30 января 2011

Если это только для отладки, обычный способ - сказать либо

p expression

, либо

puts expression.inspect

... что примерно так же.

Вы также можете использовать pp.

require 'pp'
pp expression

pp(expr)
2 голосов
/ 31 января 2011

Можно сделать что-то вроде этого:

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

, что даст вам строку, отформатированную по вашему запросу

1 голос
/ 30 января 2011

Вы полагаетесь на значение по умолчанию to_s массива. #each возвращает сам массив. Так что вы делаете то же самое, что ставит WINNING_ROWS. Кроме того, имейте в виду, что put добавляет в конце новую строку, поэтому, если вы не хотите, чтобы вам приходилось использовать запись (которая недоступна в модуле ядра, как put is, вы должны вызывать ее непосредственно на выходе 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...