Разрыв/продолжение вложенных циклов for в Coffeescript

Как прервать/продолжить вложенные циклы в 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
26
задан Benjamin W. 28 April 2016 в 04:30
поделиться

2 ответа

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
10
ответ дан 28 November 2019 в 07:11
поделиться

Coffeescript никогда не будет иметь несколько операторов прерывания / продолжения, вы должны придерживаться уродливых и чрезмерных флагов, загрязняющих ваш код, или пытаться заменить его на do лямбда-выражением и использовать return в качестве многократного прерывания.

https://github.com/jashkenas/coffeescript/issues/4254

0
ответ дан 28 November 2019 в 07:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: