Gibt es eine Ruby-Version von for-loop, die der von Java / C ++ ähnelt?

8

Gibt es eine Ruby-Version von for-loop, die der in Java / C (++) ähnelt?

In Java:

%Vor%

Der Grund ist, weil ich verschiedene Operationen basierend auf dem Index der Iteration durchführen muss. Sieht so aus, als hätte Ruby nur eine for-each-Schleife?

Habe ich Recht?

    
ryanprayogo 09.12.2009, 05:32
quelle

9 Antworten

11

Ja, Sie können each_with_index

verwenden %Vor%

Die Variable 'index' gibt Ihnen den Elementindex während jeder Iteration

    
nas 09.12.2009, 05:39
quelle
15

Ruby neigt dazu, Iteratoren anstelle von Schleifen zu verwenden; Sie können die ganze Funktion von Schleifen mit den leistungsstarken Iteratoren von Ruby erhalten.

Es gibt mehrere Möglichkeiten, dies zu tun, nehmen wir an, Sie haben ein Array 'arr' der Größe 1000.

%Vor%

Alle diese Beispiele bieten die gleiche Funktionalität

    
user214028 09.12.2009 09:31
quelle
10

Wie wäre es mit step ?

%Vor%

entspricht:

%Vor%     
draegtun 09.12.2009 10:14
quelle
5

In Ruby kann die for -Schleife wie folgt implementiert werden:

%Vor%

Wenn Sie sowohl das Element als auch den Index haben wollen, ist die Syntax each_with_index wahrscheinlich am besten:

%Vor%

Die each_with_index -Schleife ist jedoch langsamer, da sie sowohl die Objekte element als auch index für jede Iteration der Schleife bereitstellt.

    
erik 09.12.2009 06:26
quelle
4

Die while-Schleife führt ihren Körper null oder mehrmals aus, solange ihre Bedingung wahr ist.

%Vor%

Die while-Schleife kann die for-Schleife von Java ersetzen. In Java

%Vor%

ist wie folgt (außer in der zweiten Form sind initialisierte Variablen nicht lokal für for-loop).

%Vor%

Die Ruby-while-Schleife kann in dieser Form geschrieben werden, um als for-loop von Java zu arbeiten. In Ruby,

%Vor%

Beachten Sie, dass die Schleife 'while' (und 'bis' und 'für') keinen neuen Bereich einführt; Bereits vorhandene Locals können in der Schleife verwendet werden und neue Locals werden später verfügbar sein.

    
Munish 09.07.2012 13:58
quelle
2
%Vor%     
Sagiv Ofek 09.01.2014 22:02
quelle
1

Sie können jeweils mit einem Index verwenden.

    
Waseem 09.12.2009 05:40
quelle
0

times wird empfohlen über each_with_index . times ist ungefähr 6 mal schneller. Führen Sie den folgenden Code aus.

%Vor%

Ich habe das Ergebnis mit meinem MacBook (Intel Core2Duo) erreicht.

%Vor%     
TK. 09.12.2009 10:53
quelle
0

Wenn ich nur die Zahlen brauche (und nicht iterieren will), bevorzuge ich das:

%Vor%     
horseyguy 10.12.2009 02:49
quelle

Tags und Links