두 개의 문자열 중 하나가 splat 인수를 통과 할 때 두 문자열이 같은지 확인하는 데 문제가 있습니다. coffeescript는 엄격한 비교를 사용하고 splat을 통과 할 때 인수 사본을 만들기 때문에 역 따옴표를 사용하지 않고 문자열을 제대로 비교할 수 없습니다. 더 좋은 방법이 있습니까? 여기에 문제를 보여줍니다 코드의 최소한의 조각입니다 :Coffeescript - 스 플랫을 통해 문자열을 전달할 때 문자열 평등을 검사하려면 어떻게해야합니까?
check=(arg) ->
if arg == 'foo' then "'#{arg}'=='foo'" else "'#{arg}'!='foo'"
emit=(args...) ->
check(args)
console.log(emit('foo'))
console.log(check('foo'))
다음과 같이의 출력은 다음과 같습니다
> coffee mincase.coffee
'foo'!='foo'
'foo'=='foo'
편집 : MU 나에게 열쇠를 준 너무 짧은 때문에 수정 작업 코드는 당신이 플랫을 사용하는 경우
emit=(args...)->
check.apply(null,args)
감사합니다! 나는 실제로 내가 뭘했는지에 대한 자세한 내용을 나타 내기 위해 약간의 질문을 편집했으나 문제가 해결되었습니다. args를 얻는 대신 여러 개의 인수를 전달할 수 있도록 check.apply (null, args)를 수행하고 있습니다. (이 코드는 내가 게시 한 코드에서 명확하지 않습니다). http://jsfiddle.net/ambiguous/Gjh7G/ : – Erik
@Erik : 당신이 apply', 예를 들어'명시 적으로 원하지 않을 경우에도 함수 호출 ('F (배열 ...)')에 플랫 수 –
멋지다. 훨씬 좋네. 다시 한 번 감사드립니다. – Erik