for (i = 0; i < 10; i++) {
doStuff();
}
C'est le code JavaScript que je veux convertir en CoffeeScript.
doStuff() for i in [0 .. 9]
Ceci est expliqué sur la page d'introduction: http://coffeescript.org/#loops
Édition/mise à jour par JP:
La traduction exacte est:
doStuff() for i in [0...10]
Vous devez être prudent avec le ".." vs "...", par exemple:
count = 0
doStuff() for i in [0..count] #still executes once!
Donc tu penses, pas de problème ... Je vais juste boucler jusqu'au compte-1!
count = 0
doStuff() for i in [0..count-1] #executes twice!! '0' and then '-1'
Traduction littérale de:
for (var i = 0; i < someCount; ++i)
doStuff()
est
for i in [0...someCount]
doStuff()
La réponse marquée est fonctionnellement correcte mais le code généré ne correspond pas au javascript d'origine.
La bonne façon (lire, celle la plus proche du javascript suivant)
for (i = 0; i < 10; i++) {
doStuff();
}
est doStuff() for i in [0..someCount] by 1
Notez le par 1 sur la boucle for.
Maintenant, ce code crée toujours une variable _i
Supplémentaire. Si vous ne pouvez pas vivre avec, utilisez ce qui suit:
i=0
while i<=someCount
doStuff()
i++
Les réponses précédentes fonctionnent. Cependant, supprimer le i
le génère mieux pour moi:
for [0...10]
doStuff()
ou
doStuff() for [0...10]
Les autres solutions ajoutent une variable d'itérateur supplémentaire i
à utiliser à l'intérieur de la boucle, par exemple doStuff(i)
, mais à partir de http://coffeescript.org/v1/# boucles :
Si vous n'avez pas besoin de la valeur d'itération actuelle, vous pouvez l'omettre:
browser.closeCurrentTab() for [0...count]
En détail, la traduction de for i in [0...10]
Est for (i = j = 0; j < 10; i = ++j)
, tandis que la traduction de for [0...10]
Est for (i = 0; i < 10; i++)
.
Notez la discussion dans d'autres commentaires sur 2 points par rapport à 3 points ([0..9]
Vs [0...10]
).