Вложенные циклы в coffeescript - PullRequest
1 голос
/ 21 марта 2012

Это не работает, как я ожидал:

for sup in sups
  getStudents sup.CLKEY, (studs) ->
    console.log "Manager: #{sup.LNAME} Managed By: #{sup.MLNAME}"
    for stud in studs
      console.log "Student #{stud.LNAME} Managed By: #{sup.LNAME}"

getStudents получает каждый sup.CLKEY, но остальные ссылки на sup возвращают значение из последнего в массиве.

Другими словами, sup.LNAME и sup.MLNAME в операторах console.log всегда взяты из последнего sup в массиве

Как мне вложить 2-й цикл, чтобы он остался на текущем sup?

Ответы [ 2 ]

1 голос
/ 10 января 2013

Добавление «do» сделало эту работу:

for sup in sups
  do(sup) ->
    getStudents sup.CLKEY, (studs) ->
      console.log "Manager: #{sup.LNAME} Managed By: #{sup.MLNAME}"
      for stud in studs
        console.log "Student #{stud.LNAME} Managed By: #{sup.LNAME}"

Мне не удалось заставить работать оригинальное решение Кима (но с тех пор оно было изменено, чтобы отражать с помощью «do»).

0 голосов
/ 21 марта 2012

Ой, ты сделал это так:

for filename in list
  do (filename) ->
    fs.readFile filename, (err, contents) ->
      compile filename, contents.toString()
...