2010-04-10 3 views
4

Je sais que deux tableaux peuvent être zippés et le résultat peut être itéré aveC#each. Mais comment faites-vous avec un nombre inconnu d'énumérables? Disons queComment itérer plusieurs énumératifs dans 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

Pourquoi ne pas utiliser une boucle while et une ancienne variable d'index simple? –

+0

@HamishGrubijan: Parce que l'utilisation de while-loops est plus sujette aux erreurs et plus verbeuse que l'utilisation de vieilles fonctions d'ordre supérieur. – sepp2k

Répondre

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

+1: Une solution aussi simple. –

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

Ce imprimera:

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