如何将loop / while转换为漂亮的coffeescript

时间:2014-02-25 13:26:57

标签: javascript coffeescript

我正在尝试转换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()

2 个答案:

答案 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]

请参阅Equivalent Ruby .times in Coffeescript