for (i = 0; i < 10; i++) {
doStuff();
}
Das ist der JavaScript-Code, den ich in CoffeeScript konvertieren möchte.
Antworten:
doStuff() for i in [0 .. 9]
Dies wird auf der Einführungsseite erläutert: http://coffeescript.org/#loops
Bearbeiten / Aktualisieren von JP:
Die genaue Übersetzung lautet:
doStuff() for i in [0...10]
Sie müssen mit dem ".." vs "..." vorsichtig sein, zum Beispiel:
count = 0
doStuff() for i in [0..count] #still executes once!
Du denkst also, kein Problem ... Ich werde nur bis Count-1 schleifen!
count = 0
doStuff() for i in [0..count-1] #executes twice!! '0' and then '-1'
Wörtliche Übersetzung von:
for (var i = 0; i < someCount; ++i)
doStuff()
ist
for i in [0...someCount]
doStuff()
for i in [0...10]
. Zwei Punkte ( ..
) bedeuten "bis zu und einschließlich", während drei Punkte ( ...
) "bis zu, aber nicht einschließlich" bedeuten. Es ist ein Rubinismus.
Die markierte Antwort ist funktional korrekt, aber der generierte Code stimmt nicht mit dem ursprünglichen Javascript überein.
Der richtige Weg (lesen Sie den, der dem folgenden Javascript am nächsten kommt)
for (i = 0; i < 10; i++) {
doStuff();
}
wird doStuff() for i in [0..someCount] by 1
die Notiz von 1 auf dem for - Schleife.
Jetzt erstellt dieser Code noch eine zusätzliche _i
Variable. Wenn Sie nicht damit leben können, verwenden Sie Folgendes:
i=0
while i<=someCount
doStuff()
i++
Vorherige Antworten funktionieren. Wenn Sie das jedoch fallen lassen i
, ist es für mich besser:
for [0...10]
doStuff()
oder
doStuff() for [0...10]
Die anderen Lösungen fügen eine zusätzliche Iteratorvariable hinzu, die i
Sie beispielsweise innerhalb der Schleife verwenden können doStuff(i)
, jedoch unter http://coffeescript.org/v1/#loops :
Wenn Sie den aktuellen Iterationswert nicht benötigen, können Sie ihn weglassen:
browser.closeCurrentTab() for [0...count]
Im Detail ist die Übersetzung von for i in [0...10]
ist for (i = j = 0; j < 10; i = ++j)
, während die Übersetzung von for [0...10]
ist for (i = 0; i < 10; i++)
.
Beachten Sie die Diskussion in anderen Kommentaren über 2-Punkte gegenüber 3-Punkten ( [0..9]
vs. [0...10]
).