如何在coffeescript中将参数转换为数组?

Mic*_*arf 4 arrays coffeescript

我有一个函数应该返回除第一个参数以外的所有函数

foo = -> arguments[1..]

foo(0,1,2,3,4)
Run Code Online (Sandbox Code Playgroud)

遗憾的是,参数不是数组而是对象.

将对象转换为数组的最佳方法是什么?

mu *_*ort 10

有一些CoffeeScript-ish选项使用splat来处理数组ifing arguments.你可以使用slice:

f = (args...) -> args.slice(1)
Run Code Online (Sandbox Code Playgroud)

演示

或者您可以使用范围而不是直接调用slice:

f = (args...) -> args[1..-1]
Run Code Online (Sandbox Code Playgroud)

演示

您可以简化第二个版本,因为:

切片索引具有有用的默认值.省略的第一个索引默认为零,省略的第二个索引默认为数组的大小.

所以你可以放弃-1并说出:

f = (args...) -> args[1..]
Run Code Online (Sandbox Code Playgroud)

代替.感谢scar3tt指出这一点.

  • @Wex:是的但是我觉得有一些东西要说"我是一个可变函数"``(args ...)`的显式性,直接使用`arguments`并不总能给你. (2认同)