繁体   English   中英

Coffeescript习语是否等同于Python的for / else?

[英]Coffeescript idiom equivalent to Python's for/else?

我正在寻找一种优化循环的方式,而不使用布尔条件来检查如果循环正常终止而不会中断,是否执行某些操作。 在python中,我会这样写:

for x in lst:
    if cond(x):
       do_stuff_with(x)
       break
else:
    do_other_stuff()

在Coffeescript中,我能想到的最好的方法是执行以下操作:

found = false
for x in lst
    if cond x
        found = true
        do_stuff_with x
        break
if not found
    do_other_stuff()

有这种情况的Coffeescript成语吗?

对于此特定用法,可以使用EcmaScript 6 .find函数。 如果要与不支持EcmaScript 6的浏览器兼容,Underscore.js中也存在类似的方法。

result = lst.find cond
if result?
  do_stuff_with result
else
  do_other_stuff()

但是,无法直接替换Python中的for else循环。 通常,您需要声明一个布尔值来存储状态。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM