如何在Ruby中迭代多个枚举对象?

4

我知道两个数组可以被压缩成一个,然后可以使用#each迭代结果。但是如果有未知数量的可枚举对象,该如何处理呢?

anand = %w(1-0 0.5-0.5 0.5-0.5 1.0)
carlsen = %w(0-1 0.5-0.5 0.5-0.5 1.0)
kramnik = %w(0.5-0.5 0.5-0.5 0.5-0.5 1.0)
players= [anand, carlsen, kramnik]
#something smart

players.each{|round|puts round} #first line should be  "1-0 0-1 0.5-0.5" 

为什么不能使用 while 循环和一个普通的索引变量? - Hamish Grubijan
@HamishGrubijan: 因为使用 while 循环比使用普通的高阶函数更容易出错,而且更冗长。 - sepp2k
2个回答

9
players.transpose.map {|a| a.join(" ")}

4
anand.zip(carlsen, kramnik) do |round| puts round.join(" ") end

这将打印出:
1-0 0-1 0.5-0.5
0.5-0.5 0.5-0.5 0.5-0.5
0.5-0.5 0.5-0.5 0.5-0.5
1.0 1.0 1.0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接