2017-05-19 4 views
1

ich ein Array haben, lassen Sie uns sagen, es istRails: eine Iteration durch eine Reihe mehrfach

array = ["apple", "orange", "banana"] 

Auch habe ich eine Schleife:

boxes.each_with_index do |fruit, i| 
    ... some code ... 
    array[i] 
end 

Ich weiß nicht, wie viele Boxen sind. Was ich erreichen möchte, besteht darin, das Array (von "Apfel" bis "Orange") so oft wie nötig zu durchlaufen: Apfel, Orange, Banane, Apfel ... und noch einmal.

Ich konnte keine Methode finden, die mir dabei helfen kann. Außerdem habe ich über das Zurücksetzen eines Zählers innerhalb der Schleife nachgedacht, war aber nicht erfolgreich.

Was wäre Ihrer Meinung nach die eleganteste Lösung? Danke.

+0

Dies ist eine reine Ruby-Frage Daher empfehle ich Ihnen, im Titel "Schienen" zu drücken und das "Ruby-on-Rails" -Tag zu entfernen. Das Rails-Tag verschwendet Zeit für Mitglieder, die nur Rails-Fragen sehen möchten (d. H. Wer nach Rails filtern) und verhindert, dass Mitglieder, die Rails-Fragen herausgefiltert haben, Ihre Frage sehen. Ich glaube auch nicht, dass "Arrays" oder "Loops" nützliche Tags sind. Ich hätte nur "Ruby". –

Antwort

2

ich mit @Ursus einig, dass cycle wahrscheinlich am besten hier, aber Sie auch Array#rotate! verwenden:

arr = [1,2,3] 
a = arr.dup.rotate!(-1) #=> [3, 1, 2] 

a.rotate!.first   #=> 1 
a.rotate!.first   #=> 2 
a.rotate!.first   #=> 3 
a.rotate!.first   #=> 1 
Verwandte Themen