for (i = 0; i < 10; i++) {
doStuff();
}
Что код JavaScript, который я хочу преобразовать в CoffeeScript.
for (i = 0; i < 10; i++) {
doStuff();
}
Что код JavaScript, который я хочу преобразовать в CoffeeScript.
doStuff() for i in [0 .. 9]
Это объясняется на странице введения: http://coffeescript.org/#loops
Изменить/Обновить по JP:
Точный перевод:
doStuff() for i in [0...10]
Вам нужно быть осторожным с ".." против "...", например:
count = 0
doStuff() for i in [0..count] #still executes once!
Итак, вы думаете, не проблема... Я просто зациклирую до count-1!
count = 0
doStuff() for i in [0..count-1] #executes twice!! '0' and then '-1'
Литературный перевод:
for (var i = 0; i < someCount; ++i)
doStuff()
является
for i in [0...someCount]
doStuff()
Отмеченный ответ функционально правильный, но сгенерированный код не соответствует оригинальному javascript.
Правильный путь (читайте, ближайший к следующему javascript)
for (i = 0; i < 10; i++) {
doStuff();
}
doStuff() for i in [0..someCount] by 1
Обратите внимание на на 1 в цикле for.
Теперь этот код по-прежнему создает дополнительную переменную _i
. Если вы не можете с ним жить, используйте следующее:
i=0
while i<=someCount
doStuff()
i++
js2coffee.org Преобразует код для вас в обоих направлениях.
Предыдущие ответы работают. Тем не менее, отбрасывание i
генерирует это лучше для меня:
for [0...10]
doStuff()
или же
doStuff() for [0...10]
Другие решения добавляют дополнительную переменную итератора i
для использования внутри цикла, например, doStuff(i)
, но из http://coffeescript.org/v1/#loops:
Если вам не нужно текущее значение итерации, вы можете пропустить его:
browser.closeCurrentTab() for [0...count]
Подробно, перевод for я in [0...10]
предназначен for (i = j = 0; j < 10; я = ++j)
, тогда как перевод for [0...10]
предназначен for (i = 0; я < 10; i++)
.
Обратите внимание на обсуждение в других комментариях о 2- [0..9]
и 3- [0..9]
([0..9]
против [0...10]
).
Вы можете обратиться http://js2.coffee для преобразования js в кофе