2013-03-28 2 views
0

На кофейной петле 'для'coffeescript для в ошибке?

например.
если 1 < х, код, как показано ниже:

console.debug i for i in [1..0] 

генерируемый код:

var i; 
for (i = 1; i >= 0; i--) { 
    console.debug(i); 
} 

если 1> х, код, как показано ниже:

console.debug i for i in [1..2] 

Сгенерированный код:

var i; 
for (i = 1; i <= 2; i++) { 
    console.debug(i); 
} 

Если я хочу написать, что javascript.Как?

for(var i=1;i<=0;i++){ 
    console.debug(i); 
} 

Потому что я не знаю, состояние больше, чем левая сторона или меньше, чем левая сторона. Но я просто хочу это i ++

Что случилось со мной? EDIT BELOW: Для функции coffeescript я добавляю условие перед циклом или добавляю условие для цикла. например:

if x - y >=1 
    console.debug i for i in [1..x-y] 

или

console.debug i for i in [1..x-y] and x-y >=1 

Это мой way.Some один есть хороший совет?

+1

Что вы хотите сделать с этим циклом? CoffeeScript не генерирует этот код, потому что это будет бесконечный цикл, если вы не делаете что-то с i внутри цикла. – Dogbert

+0

Вы видите условие, i равно 1,1 <= 0 - false, поэтому он игнорирует цикл. – sjbwylbs

+0

К сожалению, извините. Но CoffeeScript выполняет цикл вперед/назад в зависимости от того, является ли начало меньше или больше конца. Вы не можете сгенерировать этот код непосредственно AFAIK. – Dogbert

ответ

0

Похоже, что вы хотите сделать это:

console.debug i for i in [1..x-y] by 1 

Который компилируется в :

var i, _i, _ref; 

for (i = _i = 1, _ref = x - y; _i <= _ref; i = _i += 1) { 
    console.debug(i); 
} 
+0

Да. Это нормально. – sjbwylbs

0
for(var i=1;i<=0;i++){ 
    console.debug(i); 
} 

эквивалентно

var i = 1; 
while(true) { 
    console.debug(i); 
    i++; 
} 

который в CoffeeScript записывается в виде

i = 1 
while true 
    console.debug(i); 
    i++;