1

我正在尝试编写一个循环,该循环接受一个嵌套数组并一次创建一个包含两个连续元组的子数组。输入数组可能是这样的

arr = [['A','B'],['C','D'],['E','F'],['G','H'],['I','J'],['K','L'],
      ['M','N'],['O','P']]

Output: ['A','B'],['C','D']
        ['E','F'],['G','H']
        ['I','J'],['K','L']
        ['M','N'],['O','P']

我尝试了各种循环,比如

arr.each_slice(2) do |k,m|
   new_arr=[k,m]
   puts new_arr
end 

 arr.each_slice(2) { |k,m| puts(k,m) }

这有什么问题?在这两种情况下,输出都是

A
B
C
D .....
4

1 回答 1

5

这就是puts在 ruby​​ 1.9 中处理数组的方式,它将每个元素打印在一个新的 line 上。结果就是您想要的,打印时看起来会有所不同:).inspect例如,尝试使用 打印。

arr = [['A','B'],['C','D'],['E','F'],['G','H'],['I','J'],['K','L'],
      ['M','N'],['O','P']]

arr.each_slice(2) do |k,m|
   new_arr = [k,m]
   puts new_arr.inspect
end
# >> [["A", "B"], ["C", "D"]]
# >> [["E", "F"], ["G", "H"]]
# >> [["I", "J"], ["K", "L"]]
# >> [["M", "N"], ["O", "P"]]

http://www.ruby-doc.org/core-1.9.3/IO.html#method-i-puts

puts(obj, ...) → 无

与 IO#print 一样将给定对象写入 ios。在尚未以换行序列结尾的任何内容之后写入记录分隔符(通常是换行符)。如果使用数组参数调用,则将每个元素写入新行。如果不带参数调用,则输出单个记录分隔符。

$stdout.puts("this", "is", "a", "test")

产生:

this
is
a
test
于 2012-10-21T12:46:18.650 回答