Wie ersetze ich eine For-Schleife in Ruby?

8

In Ruby ist es schlecht, For-Schleifen zu verwenden. Dies wird allgemein verstanden. Ein Style Guide wird mir empfohlen: ( Ссылка ) sagt:

"Verwenden Sie nie für, es sei denn, Sie genau wissen warum. Meistens sollten stattdessen Iteratoren verwendet werden. Für wird in Bezug auf jede implementiert (so fügen Sie eine Ebene der Indirektion hinzu), aber mit einer Wendung - for führt keinen neuen Bereich ein (anders als jeder) und Variablen, die in seinem Block definiert sind, werden außerhalb davon sichtbar sein. "

Das gegebene Beispiel ist:

%Vor%

Ich habe recherchiert und finde keine Erklärung dafür, wie man eine for-Schleife simuliert, die einen iterierenden Wert liefert, den ich an Stellen übergeben oder arithmetisch ausführen kann. Zum Beispiel, mit was würde ich ersetzen:

%Vor%

Es ist einfach, wenn es ein Array ist, aber ich brauche oft die aktuelle Position für andere Zwecke. Es gibt entweder eine einfache Lösung, die mir fehlt, oder Situationen, in denen für erforderlich ist. Außerdem höre ich, dass Leute über für sprechen, als ob es nie gebraucht würde. Was ist dann ihre Lösung?

Kann es verbessert werden? Und was ist die Lösung, wenn es eine gibt? Danke.

    
Plasmarob 13.08.2013, 17:03
quelle

2 Antworten

10

Wenn Sie über eine Sammlung iterieren und und den Index verfolgen möchten, verwenden Sie each_with_index :

%Vor%

Ihr for i in 0...size Beispiel wird zu:

%Vor%     
meagar 13.08.2013, 17:06
quelle
3

Vergiss nicht, dass du auch so coole Sachen machen kannst

%Vor%

Ausgabe

%Vor%

Sie können diese Technik auch als Klassen- oder Instanzmethode verwenden

%Vor%

Beispiel mit der Klassenmethode

%Vor%

Beispiel mit Instanzmethode

%Vor%     
user633183 13.08.2013 17:20
quelle

Tags und Links