2010-04-10 21 views
4

我知道两个数组可以压缩,结果可以用#each迭代。但是,你如何使用未知数量的枚举数来做到这一点? 假设如何迭代ruby中的多个枚举?

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" 
+0

为什么你不能使用while循环和一个普通的旧索引变量? – 2010-04-10 22:28:55

+0

@HamishGrubijan:因为使用while循环比使用普通的旧的高阶函数更容易出错和更冗长。 – sepp2k 2010-04-10 22:41:11

回答

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

+1:这样一个简单的解决方案。 – 2010-04-10 23:30:58

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