2012-01-20 3 views
0

에서 함수는 아니고, 위대한, 그러나 까다로운 ... 내가문자열 난 그냥 커피 스크립트를 배우기 시작 커피 스크립트

를 커피 스크립트 자바 스크립트에서 근무 코드를 번역하려고

와 내가 많이 실패 링크에 내가 3 개 페이스트

  1. js.js
  2. cs.coffee을 작업하는 동일한 버전인지 원래 코드가 게시하지만, 커피 스크립트에서
  3. compiled.js 번역 JS에서 JS

의 CS 컴파일러 버전 번역 내가지도에 반환 람다 어딘가에서 "문자열은 함수가 아닙니다"의 오류가 발생했습니다

gist source code link

+0

귀하의 내가 입력 1에서 @를 제거하는 경우 하나 :( – Raynos

답변

3
  1. 커피 스크립트의 @입니다 단지 this.

에 대한 나타내는 표현이 그래서 원래 JS는이 여기서

당신이 원래의 js에서 $(this)이 어디 17,451,515,
if (input1.val().length <= 4 ... 

당신의 커피 스크립트가

if input1.val() <= 4 
  1. 이 있어야합니다, 당신은 여전히 ​​당신의 커피 스크립트에 $(this)이 필요합니다. . 그래서

    또는 @의 input1.map (-.> this.val() 일치 (/ \ S +/g)) 길이 없습니다 0

은 다음과 같아야합니다

or @input1.map(-> $(this).val().match(/\s+/g)).length not 0 

I 다른 문제를 직접 볼 수는 없습니다. 시도해보고 문제가 발생하는지 또는 오류가 있는지 살펴 봅니다.

[편집]

브라켓에 또한 not 0에 언급 된 바와 같이 주로 관련된 다른 문제가 있었다.

if input1.val() <= 4 \ 
    or (input1.map(-> $(this).val().match(/\s+/g)).length != 0) \ 
    or (input1.map(-> $(this).val().match(/[^A-Za-z0-9]/g)).length != 0) 
    then input1.attr('id','error-highlight'); 
    else input1.attr('id','success-highlight'); 

그것은된다 :

(function() { 
    if (input1.val() <= 4 || (input1.map(function() { 
     return $(this).val().match(/\s+/g); 
    }).length !== 0) || (input1.map(function() { 
     return $(this).val().match(/[^A-Za-z0-9]/g); 
    }).length !== 0)) { 
     input1.attr('id', 'error-highlight'); 
    } else { 
     input1.attr('id', 'success-highlight'); 
    } 
    }).call(this); 

에 대한 권리 보이는 다음 작업은 (내가 생각하는) 커피 스크립트가 있습니다.

+0

를 사용할 수있을 때 루프 두 가지를 사용하여 - 그것은 입력 1 정의되지 않은 것을 말한다, 공식 사이트/docs에 대한 안내에 따라 변수를 @를 사용해야합니다! = 도움이되었지만 이상합니다. coffescript.org는 "not"는! =와! = is! ==;와 같다고 말합니다. 정말 여분의 (@ input1 ...) 필요 없어 어쨌든 내 코드는 지금 $ (this) 및! = - 인해서 일하고있다 절반은 그것을 해결할 수있는 것 같아 – Umren

+0

'.map (...) 대신'.any (...) 사용을 고려하십시오. length isnt 0' – grncdr

+0

@grncdr 메소드는'any()'가 아니라'some()'라고합니다. –

9

.length not 0

가 컴파일됩니다

.length(!0)

+0

네, 아주 이상한 행동입니다. – Umren

+17

@Umren 나는'.length isnt 0'을 찾고 있다고 생각합니다. CoffeeScript는 isnt를'! =='로 컴파일합니다. –

+1

@ CoffeeScriptFanboy 왜 downvote – Raynos