CoffeeScript中剩下的`while … while循环…?

在CoffeeScript中, while循环是标准的:

 while x() y() 

但是,以下1不起作用:

 do y() while x() 

这仅仅是第一个例子的糖:

 y() while x() 

CoffeeScript是否带有一个至less执行一次的内置循环?

1另外, do 一个关键字 – 它用来调用匿名函数。

CoffeeScript文档说:

CoffeeScript提供的唯一低级循环是while循环。

我不知道一个内置的循环至less执行一次,所以我猜是另一种方法

 loop y() break if x() 

我知道这个答案是非常古老的,但是自从我通过Google进入这里之后,我还以为别人可能也是这样。

在CoffeeScript中构build一个do … while循环我认为这个语法模仿它是最好的,最简单的,而且是非常可读的:

 while true # actions here break unless # conditions here 

你的猜测是正确的:CoffeeScript中没有do-while等价物。 所以你通常会写

 y() y() while x() 

如果你经常这样做,你可以定义一个辅助函数:

 doWhile = (func, condition) -> func() func() while condition() 

我发现这可以通过短路条件来实现:

 flag = y() while not flag? or x() 

我一直在做一个项目,我只是强迫条件评估在循环结束,然后终止在开始。

 # set the 'do' variable to pass the first time do = true while do # run your intended code x() # evaluate condition at the end of # the while code block do = condition # continue code 

这不是很优雅,但它确实让你无法为你的代码块定义一个新的函数并运行两次。 通常有一种方法来编写do … while语句,但是那些时候你不能有一个简单的解决scheme。