使用下面我的整个动态数组输出,每行10个 - 我想设置一个参数,每行创建3个数组项,然后创建另外3行。
...
while i < arr.length
print "Define types of coffee drinks: "
coffee = gets.chomp
arr[i] = coffee
i += 1
end
puts arr.join(", ")
break
...
例如,在创建动态数组后,它输出如:
black iced coffee, cold brew, espresso, flat white, frap, latte, drip, fancy, smancy
一行中的所有10个,我希望输出如下:
black iced coffee, cold brew, espresso,
flat white, frap, latte,
drip, fancy, smancy
答案 0 :(得分:2)
array.each_slice(3).with_index do |part, ind|
puts part.join(", ") + (ind == 3 ? "" : ",")
end
可能就是你想要做的。
答案 1 :(得分:2)
这是一个简单的解决方案,几乎得到你所要求的:
array.each_slice(3) { |part| puts part.join(', ') }
#=> black iced coffee, cold brew, espresso
flat white, frap, latte, drip
fancy, smancy
然而,这是前两行的最后一个逗号。
如果这很重要,您可以尝试添加它:
array.each_slice(3) { |part| puts part.join(', ') + ',' }
#=> black iced coffee, cold brew, espresso,
flat white, frap, latte, drip,
fancy, smancy,
......但现在它也在最后一行!
这可能是一种稍微优雅的方式,但它有点繁琐......怎么样:
array.each_slice(3).with_index do |part, i|
puts part.join(", ") + (array.size % 3 == i ? '' : ',')
end
#=> black iced coffee, cold brew, espresso,
flat white, frap, latte, drip,
fancy, smancy
答案 2 :(得分:2)
我可能会使用each_slice
和join
来构建各行:
a.each_slice(3).map { |a| a.join(', ') }
然后再次join
加入这些行:
puts a.each_slice(3).map { |a| a.join(', ') }.join(",\n")
当然,这假设除了最后一行之外的每一行都应包含三个元素,并且样本输出的第二行是拼写错误。