EDIT: Vanaf coffeeScript 1.5 wordt by -1
syntaxis ondersteund.
Eerst moet u uzelf vertrouwd maken met het sleutelwoord door
, waarmee u een stap kunt opgeven. Ten tweede moet je begrijpen dat de CoffeeScript-compiler een zeer naïeve benadering van lus-eindpunten inneemt (zie uitgave 1187 , waarnaar Blender gelinkt heeft), wat betekent dat
for some in something by -1 # don't do this!!!
zal resulteren in een oneindige lus-het begint bij index 0, verhoogt de index met -1 en wacht vervolgens tot de index something.length
raakt. Zucht.
U moet dus in plaats daarvan de syntaxis van de bereiklus gebruiken, waarmee u die eindpunten zelf kunt opgeven, maar ook dat u zelf de loopitems moet pakken:
for i in [something.length - 1..0] by -1
some = something[i]
Uiteraard is dat behoorlijk rommelig. U moet dus overwegen iterating over iets.reverse()
in plaats daarvan. Onthoud dat reverse()
de array waarop u het aanroept, wijzigt! Als u een array wilt behouden, maar erachterwaarts wilt itereren, moet u deze kopiëren:
for some in something.slice(0).reverse()