Как прервать/продолжить вложенные циклы в Coffeescript? Например, у меня есть что-то вроде:
for cat in categories
for job in jobs
if condition
do(this)
## Iterate to the next cat in the first loop
Также, есть ли способ обернуть весь второй цикл как условие к другой функции внутри первого цикла? Например,
for cat in categories
if conditionTerm == job for job in jobs
do(this)
## Iterate to the next cat in the first loop
do(that) ## Execute upon eliminating all possibilities in the second for loop,
## but don't if the 'if conditionTerm' was met
Coffescript "break" разрывает только немедленный цикл и не имеет возможности идентифицировать внешний цикл для обрыва (раздражает!). Этот следующий хак работает в некоторых случаях для разрыва нескольких циклов при выполнении условия:
ar1 = [1,2,3,4]
ar2 = [5,6,7,8]
for num1 in ar1
for num2 in ar2
console.log num1 + ' : ' + num2
if num2 == 6
breakLoop1 = true; break
break if breakLoop1
# Will print:
# 1 : 5
# 1 : 6
Coffeescript никогда не будет иметь несколько операторов прерывания / продолжения, вы должны придерживаться уродливых и чрезмерных флагов, загрязняющих ваш код, или пытаться заменить его на do
лямбда-выражением и использовать return
в качестве многократного прерывания.