如何在Coffeescript中编写空while循环?

如何在Coffeescript中编写空while循环?,coffeescript,Coffeescript,我想把一些旧代码翻译成咖啡脚本。但没有直接翻译: while ( doWork() ) {} “while doWork()”后面不带任何内容会导致语法错误 while doWork() then 如果使用执行此操作,则可能是标准解决方案,因为它明确用于将条件与(在本例中为空)主体分离。或者你也可以写 while doWork() ;# (通过#可以防止vim语法高亮显示将其标记为错误) 我也喜欢continue while doWork()解决方案,但我强烈建议不要使用注释中提到的任

我想把一些旧代码翻译成咖啡脚本。但没有直接翻译:

while ( doWork() ) {}
“while doWork()”后面不带任何内容会导致语法错误

while doWork() then

如果使用
执行此操作,则
可能是标准解决方案,因为它明确用于将条件与(在本例中为空)主体分离。或者你也可以写

while doWork()
  ;#
(通过
#
可以防止vim语法高亮显示将其标记为错误)

我也喜欢
continue while doWork()
解决方案,但我强烈建议不要使用注释中提到的任何其他形式的
expression while doWork()
,因为当这是函数的最后一条语句时,它将成为一个列表构造函数:

_results = [];
while (doWork()) {
  _results.push(expression);
}
return _results;

或者,如果你愿意用几个字节换取可读性,我认为
继续而doWork()
将是最清晰的编写方法。我使用
(>)
作为禁止操作,因为它是我发现的最短的一个,所以我会在doWork()时使用
(>)@Trevor我很惊讶你的建议是多么的可读(语法)而且出人意料地晦涩难懂(语义上)。如果没有Aaron的评论,我永远无法理解它是如何工作的:)(但这是一个非常漂亮的习惯用法,我很乐意将其作为一个答案发布。)@Aaron如果你想获得最短的no op,为什么不
0 while doWork()
?它还有编译成JavaScript的好处,JavaScript只差1字节,效率非常高。:)或
循环中断,除非doWork()