2012-02-02 2 views
2

각 일치하는 값에 함수를 호출하는 대신 값 배열 ['broccoli', 'spinach']을 가져오고 싶지만 컴파일러 오류가 계속 발생합니다. 누군가 내가 오해 한 것을 설명 할 수 있을까요?어떻게 결과를 CoffeeScript의 배열로 수집합니까?

# 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') 

답변

6

당신은 이해가 반환하도록되어있는 값이 누락 (원래의 eat food,하지만 당신은 food이 수정되지 않은 반환 할). 그래서 대신 :

for food in foods when food isnt 'chocolate' 

당신이 원하는 :

food for food in foods when food isnt 'chocolate' 

(. 당신이 현대적인 자바 스크립트 구현을 목표로하는 경우, 그것은 아마 foods.filter (food) -> food isnt 'chocolate' 같은 것을 사용하는 것이 더 읽을 것지만)

+0

감사합니다 ,'arr = (음식에 음식이 들어 있지 않은 '음식'에 대한 음식 '초콜릿') '작동합니다. 괄호가 필요합니다. – davidzarlengo

+1

@davidzarlengo : 그래, 미안, 내가 언급 했어야 했어. 일반적으로 팸플릿이 필요합니다. 괄호가 없으면 파서는 음식이 초콜릿이 아니라면 음식에서 음식으로 '(arr = food)'이라고 읽습니다. – Chuck