РЕДАКТИРОВАТЬ: Начиная с CoffeeScript 1.5 by -1
поддерживается синтаксис.
Во-первых, вы должны ознакомиться с ключевым словом by
, которое позволяет вам указать шаг. Во-вторых, вы должны понимать, что компилятор CoffeeScript использует очень наивный подход к конечным точкам цикла (см. выпуск 1187 , на который ссылается Blender), что означает, что
for some in something by -1 # don't do this!!!
приведет к бесконечному циклу - он начинается с индекса 0, увеличивает индекс на -1, а затем ждет, пока индекс не достигнет something.length
. Вздох.
Таким образом, вместо этого вам нужно использовать синтаксис цикла диапазона, который позволяет вам самим определять эти конечные точки, но также означает, что вы должны сами захватывать элементы цикла:
for i in [something.length - 1..0] by -1
some = something[i]
Очевидно, это довольно грязно. Поэтому вам следует рассмотреть возможность итерации по something.reverse()
. Просто помните, что reverse()
изменяет массив, который вы вызываете! Если вы хотите сохранить массив, но переберите его в обратном порядке, вам следует скопировать его:
for some in something.slice(0).reverse()