我正在尝试转换js
var n = 50;
force.start();
for (var i = 0; i < n; ++i) force.tick();
force.stop();
我用下面这样的东西转换成coffeescript,只是想知道是否有更好的方法,这个看起来更长?一行/列表理解?
n = 50
force.start()
i = 0
while i < n
force.tick()
++i
force.stop()
答案 0 :(得分:4)
force.tick() for i in [1..50]
透明至:
var i, _i;
for (i = _i = 1; _i <= 50; i = ++_i) {
force.tick();
}
如果您不关心计数器var(在您的示例中未使用),则:
force.tick() for [1..50]
其中包含:
var _i;
for (_i = 1; _i <= 50; _i++) {
force.tick();
}
答案 1 :(得分:2)
Dave Newton用两个时期给出了一个包容范围的例子:
force.tick() for i in [1..50]
您还可以使用独占范围(使用三个句点),这样可以更密切地模仿原始代码。
force.tick() for i in [0...50]
当然,您可以将n
保留为变量:
n = 50
force.tick() for i in [0...n]
请参阅 http://elegantcode.com/2011/08/02/exploring-coffeescript-part-5-ranges-loops-and-comprehensions/
如果您不需要变量i
,则可以将其删除:
n = 50
force.tick() for [0...n]