Ruby:如何打印2D数组?

时间:2011-01-30 03:57:07

标签: ruby

puts WINNING_ROWS.each{ |solution| "[ #{solution.map{ |space| "#{space}"}} ]"}

我尝试过上面的操作,但之后只是用新的行字符列出每个值。

我正在尝试获取输出:

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

3 个答案:

答案 0 :(得分:7)

如果这只是用于调试,通常的方法是说

p expression

puts expression.inspect

......这是一回事。

您也可以使用pp

require 'pp'
pp expression

pp(expr)

答案 1 :(得分:2)

可以这样做:

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

这将为您提供按照您的要求格式化的字符串

答案 2 :(得分:1)

您依赖于Array的默认to_s。 #each返回数组本身。所以你所做的和WINNING_ROWS一样。另外,请记住,puts最后会添加一个换行符,所以如果你不想让你必须使用write(它在内核模块中不可用,就像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