1
我無法檢查兩個字符串是否相等,當它們中的一個通過splat參數傳遞時。因爲coffeescript使用嚴格的比較,並且因爲它們在通過splat的時候創建了參數的副本,所以我無法正確比較字符串而無需使用反引號。有沒有更好的辦法?這裏有一個最小的一段代碼,演示了此問題:Coffeescript - 如何在通過splat傳遞字符串時檢查字符串相等性?
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'
編輯: 畝太短,給我的鑰匙,所以修訂工作代碼如下所示(一切,除了發出相同)
emit=(args...)->
check.apply(null,args)
謝謝!我已經編輯了一些問題,以表明我實際上要做的更多細節,但是這解決了問題。我現在在做check.apply(null,args),而不是獲取參數[0],以便我可以傳遞多個參數(這不會從我發佈的代碼中清除)。 – Erik 2013-05-10 15:35:35
@Erik:如果你不想顯式地應用'',你也可以在函數調用('f(array ...)'')中摔打,例如:http://jsfiddle.net/ambiguous/Gjh7G/ – 2013-05-10 17:29:44
酷,這是更好。再次感謝 – Erik 2013-05-11 15:15:25