0

我想创建一个 CoffeeScript 范围(如[4...496]),但使用长度而不是结束范围。这可以通过像这样的循环来完成

myNum = getBigNumber()
newArray = ( n + myNum for n in [0...50] )

但我想知道我是否缺少与范围相关的快捷方式。有没有类似的东西

[getBigNumber()...].length(50)在 CoffeeScript 中可用?

4

1 回答 1

1

你可以做

range = [myNum...myNum + 50]

编辑:正如 mu 在评论中指出的那样,无论您使用上面的代码片段还是原始代码,CoffeeScript 都会增加一些复杂性。如果性能是一个问题,最好还是使用纯 JS 进行循环(在 CoffeeScript 代码中使用反引号)。

假设您想要一个上升(即从低到高)范围,您可以这样做:

myNum  = getBigNumber()
length = 50
range  = new Array length
i      = 0
`for(; i < length ; i++) { range[i] = i + myNum }` # raw, escaped JS

比 CoffeeScript 的处理方式很多,但请注意,CoffeeScript 的范围语法还支持通过翻转边界值来创建递减范围。因此,CoffeeScript(一如既往)看起来更容易,使用起来也更简单,但在我的测试中,原始 JS 的速度要快 3.5 倍。

于 2013-11-02T14:14:35.287 回答