2011-01-30 12 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のようにカーネルモジュールでは使用できないwriteを使用しなければならない場合は、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 
関連する問題