2016-02-09 2 views
1

В некоторых сложных ситуациях вы хотите вручную заставляйте цикл для перехода на другую позицию:Насильно итерация цикла в CoffeeScript

for(var i = 0; i < objects.length; i++) { 
    var object = objects[i]; 
    if(object.type == typeThatShouldOnlyDisplayOnce) { 
    displayObject(); 
    i += jumpToValidPosition; 
    } 
} 

Как это может быть сделано в CoffeeScript? CoffeeScript для петель, как

for i in [0...100] 
    doSomething() 

И глядя на скомпилированный код Javascript, это, кажется, выходит что-то больше похоже на

for (n = i = ref = 0, ref1 = 100; ref <= ref1 ? i < ref1 : i > ref1; n = ref <= ref1 ? ++i : --i) { 

Есть ли CoffeeScript способ силой прыгать в другое положение петли?

+0

Вы пробовали переназначения 'i'? –

+0

Да, все еще переходит к следующему значению, а не переназначенному. Кажется, связано с тем фактом, что скомпилированный код использует 'ref', а не' i/n' –

+1

Извините, я не могу ответить на этот вопрос, но обойтись, этот вид мутации итератора очень подвержен ошибкам и, вероятно, должен быть избегать. – Matt

ответ

2

for петли просто синтаксический сахар для while цикла, так что вы можете переписать ее как таковую:

i = 0 
while i < objects.length 
    object = objects[i] 
    if object.type == typeThatShouldOnlyDisplayOnce 
    displayObject() 
    i += jumpToValidPosition 
    else 
    i++ 
Смежные вопросы