Как вы собираете результаты понимания в массив в CoffeeScript? - PullRequest
2 голосов
/ 02 февраля 2012

Вместо того, чтобы вызывать функцию для каждого соответствующего значения, я хотел бы получить массив значений ['broccoli', 'spinach'], но я продолжаю получать ошибки компилятора.Может кто-нибудь объяснить, что я не так понимаю?

# Health conscious meal.  - This example is from http://coffeescript.org/#loops
foods = ['broccoli', 'spinach', 'chocolate']
eat food for food in foods when food isnt 'chocolate'

# Failed Attempt #1 - Unexpected TERMINATOR
arr = for food in foods when food isnt 'chocolate'

# Failed Attempt #2 - Unexpected ')'
arr = (for food in foods when food isnt 'chocolate')

1 Ответ

6 голосов
/ 02 февраля 2012

Вам не хватает значения, которое должно возвращать понимание (которое в оригинале равно eat food, но вы хотите вернуть food без изменений). Так что вместо:

for food in foods when food isnt 'chocolate'

Вы хотите:

food for food in foods when food isnt 'chocolate'

(Хотя, если вы нацелены на современные реализации JavaScript, вероятно, было бы более читабельно, если бы просто использовалось что-то вроде foods.filter (food) -> food isnt 'chocolate'.)

...