2011-07-05 3 views
0

는 자바 스크립트 코드가 존재한다.커피 스크립트 함수 호출 매개 변수와 괄호

나는 시도했다 :

re = /some_regex/g 
re.exec link.attr 'href' [0] # compile error: unexpected [ 
re.exec (link.attr 'href')[0] # javascript: re.exec((link.attr('href'))[0]); 
re.exec (link.attr('href'))[0] # javascript: re.exec((link.attr('href'))[0]); 

이 어떻게 할까? 이 (link.attr('href'))[0]이 인수이라고 생각하는 커피 스크립트의 컴파일러가 있기 때문에 아니면, re.exec

// adding new variable 
temp = re.exec link.attr 'href' 
temp[0] 

답변

3

공간이 문제를 일으키는해야한다. 이것은 또한 작동합니다

re.exec(link.attr('href'))[0] 

당신이 정말로 심하게이 라인에없는 괄호 구문을 사용하려면 :

이 작업을 수행하는 올바른 방법은 공백없이, 정확하게 자바 스크립트처럼 그것을 할 것입니다 :

re.exec(link.attr 'href')[0] 

당신은 단순히 절대적으로 필요 부분을 괄호 경우

+0

나는 이해했다. 답변을 주셔서 감사합니다 –

+0

더 자세히 설명하려면 : 일반적으로 CoffeeScript의 암시 적 괄호는 표현식의 끝까지 확장됩니다. 그래서'link.attr 'href'[0]'은'link.attr ('href'([0]))'과 동등합니다. –

+0

이전 주석에 대한 약간의 수정 :''href '[0]'그 자체는'x [y]'로 컴파일되고 컴파일러는 문자열이 함수가 아니라는 것을 인식하기 때문에 잘못된 표현식입니다 . –

1

이 명확하지 않을까요 (그들은 같은 결과를 컴파일), 그리고 가장 CoffeeScr의 나머지를 ipt-like-way?

(re.exec link.attr 'href')[0] 

또는 어쩌면 ('HREF'는 또 다른 속성 인 경우) :

(re.exec link.attr.href)[0] 

또는 더 나은 아직, 당신이 원래 어떤 제안의 라인을 따라 더 명확하게하기 :

matches = re.exec link.attr.href 
matches[0] // idiomatic to re.exec: first element is matched RE 
관련 문제