当其中一个字符串通过 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'
编辑: mu 太短给了我钥匙,所以修改后的工作代码看起来像这样(除了发出之外,一切都是一样的)
emit=(args...)->
check.apply(null,args)