首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在xtend中中断foreach循环?

如何在xtend中中断foreach循环?
EN

Stack Overflow用户
提问于 2016-09-27 22:22:00
回答 3查看 3.5K关注 0票数 3

我有下面的代码:这是迭代arrayList直到结束,尽管我不需要它。我不知道如何打破它,因为xtend没有break语句。如果我不能将其转换为while循环,那么在xtend中有没有类似于java中break语句的替代方法呢?

代码语言:javascript
复制
arrayList.forEach [ listElement | if (statusFlag){
     if(monitor.canceled){
          statusFlag = Status.CANCEL_STATUS
          return
     }
     else{
          //do some stuff with listElement
     }      
}]
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-09-30 22:19:19

你可以试试这样的东西

代码语言:javascript
复制
arrayList.takeWhile[!monitor.cancelled].forEach[ ... do stuff ...]
if ( monitor.cancelled ) { statusFlag = Status.CANCEL_STATUS }

takeWhile是延迟执行的,所以它应该像预期的那样工作,并在正确的时刻中断(如果内存可见性允许,我希望monitor.cancelled是易失性的)。

不确定状态标志是如何进入图片的,你可能还需要在一个或两个闭包中添加对它的检查。

票数 3
EN

Stack Overflow用户

发布于 2016-09-28 00:01:22

你说得对,Xtend不支持breakcontinue

因为看起来你想基于外部条件“中断”(所以你不能使用过滤),所以我认为抛出一个异常是一个不错的选择。

伪代码:

代码语言:javascript
复制
try {
    arrayList.forEach[
        if (monitor.canceled) {
            throw new InterruptedException()
        }
        else {
            // Continue processing
        }
    ]
}
catch (InterruptedException e) {
    // Handle
}
票数 2
EN

Stack Overflow用户

发布于 2019-05-06 15:17:11

您说得对,Xtend不支持中断并继续。将break的特定功能移到java中,并在xtend中使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39727226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档