我想创建一个 CoffeeScript 范围(如[4...496]
),但使用长度而不是结束范围。这可以通过像这样的循环来完成
myNum = getBigNumber()
newArray = ( n + myNum for n in [0...50] )
但我想知道我是否缺少与范围相关的快捷方式。有没有类似的东西
[getBigNumber()...].length(50)
在 CoffeeScript 中可用?
我想创建一个 CoffeeScript 范围(如[4...496]
),但使用长度而不是结束范围。这可以通过像这样的循环来完成
myNum = getBigNumber()
newArray = ( n + myNum for n in [0...50] )
但我想知道我是否缺少与范围相关的快捷方式。有没有类似的东西
[getBigNumber()...].length(50)
在 CoffeeScript 中可用?
你可以做
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 倍。