2015-11-27 100 views
2

我在紅寶石下面的情況之前:輸出線到線的紅寶石

f.puts "The result is: " 
my_array.flatten.each {|n| f.puts n} //my_array is constructed before and it outputs the correct line 

正如你可以看到我寫的字符串「的結果是:」到文件中。現在我想在同一行輸出my_array的結果,而不是一行下。

我試了一下:

f.puts "The result is: #{my_array.flatten.each {|n| f.puts n}}" 

但是這是不對的。任何想法=

+1

您可能想使用'print'而不是'puts'。 'puts'在輸出中添加換行符,'print'不輸出。 – spickermann

回答

0
f.puts "The result is: #{my_array.flatten.join(" ")}" 
2

您嘗試過的行:f.puts "The result is: #{my_array.flatten.each {|n| f.puts n}}"幾乎是正確的。

問題是,當您迭代each循環中的值時,只需在字符串完全構建之前將它們打印到文件中。你應該做的就是將這些值轉換成一個字符串,然後只是f.puts那個字符串。

因此,而不是flatten.each {|n| f.puts n}你可以使用flatten.join(', ')

或者,你可以使用f.print代替puts - 在print不追加換行符,所以這段代碼也將工作:

f.print "The result is: " 
my_array.flatten.each {|n| f.print n, " "} 
f.puts # or f.print "\n" 
0

的問題是,#{}走的是命令的返回值,這是陣列本身。你可以在一個命令中使用.join

f.puts "The result is:\n#{my_array.flatten.join("\n")}" 

它會給出所需的輸出。