使用参数调用可变参数函数
Calling varargs function with arguments
当我有一个功能(我无法更改)时:
trigger: (evtType, args...) ->
# ... find callback based on evtType
callback.apply(this, args)
是否有更简洁的调用方式,并且仍能获得与此相同的结果:
open: ->
@trigger.apply(@, ['beforeOpen'].concat Array::slice.call(arguments, 0))
是的,splat 也适用于 calling a function:
CoffeeScript provides splats ...
, both for function definition as well as invocation, making variable numbers of arguments a little bit more palatable.
您可以使用 arguments...
:
open: ->
@trigger('beforeOpen', arguments...)
CoffeeScript 会将其转换为常见的 apply
/concat
/slice
丑陋。
当我有一个功能(我无法更改)时:
trigger: (evtType, args...) ->
# ... find callback based on evtType
callback.apply(this, args)
是否有更简洁的调用方式,并且仍能获得与此相同的结果:
open: ->
@trigger.apply(@, ['beforeOpen'].concat Array::slice.call(arguments, 0))
是的,splat 也适用于 calling a function:
CoffeeScript provides splats
...
, both for function definition as well as invocation, making variable numbers of arguments a little bit more palatable.
您可以使用 arguments...
:
open: ->
@trigger('beforeOpen', arguments...)
CoffeeScript 会将其转换为常见的 apply
/concat
/slice
丑陋。