如何打破 xtend 中的 foreach 循环?
How to break foreach loop in xtend?
我有以下代码:尽管我不想要它,但它正在迭代 arrayList 直到结束。我不知道如何打破它,因为 xtend 没有 break 语句。如果我不能将其转换为 while 循环,那么 xtend 中是否有任何替代方法类似于 java?
中的 break 语句
arrayList.forEach [ listElement | if (statusFlag){
if(monitor.canceled){
statusFlag = Status.CANCEL_STATUS
return
}
else{
//do some stuff with listElement
}
}]
你说得对,Xtend 不支持 break
和 continue
。
因为你似乎想 'break' 基于外部条件(所以你不能使用例如过滤)我认为抛出异常是一个不错的选择。
伪代码:
try {
arrayList.forEach[
if (monitor.canceled) {
throw new InterruptedException()
}
else {
// Continue processing
}
]
}
catch (InterruptedException e) {
// Handle
}
你可以尝试类似的东西
arrayList.takeWhile[!monitor.cancelled].forEach[ ... do stuff ...]
if ( monitor.cancelled ) { statusFlag = Status.CANCEL_STATUS }
takeWhile 延迟执行,因此它应该按预期工作并在正确的时刻中断(内存可见性允许,我希望 monitor.cancelled 是易变的)。
不确定状态标志如何出现在这里,您可能还需要在一个或两个闭包中添加检查。
你说得对,Xtend 不支持 break and continue。
将中断特定功能移动到 java 并在 xtend 中使用它。
我有以下代码:尽管我不想要它,但它正在迭代 arrayList 直到结束。我不知道如何打破它,因为 xtend 没有 break 语句。如果我不能将其转换为 while 循环,那么 xtend 中是否有任何替代方法类似于 java?
中的 break 语句arrayList.forEach [ listElement | if (statusFlag){
if(monitor.canceled){
statusFlag = Status.CANCEL_STATUS
return
}
else{
//do some stuff with listElement
}
}]
你说得对,Xtend 不支持 break
和 continue
。
因为你似乎想 'break' 基于外部条件(所以你不能使用例如过滤)我认为抛出异常是一个不错的选择。
伪代码:
try {
arrayList.forEach[
if (monitor.canceled) {
throw new InterruptedException()
}
else {
// Continue processing
}
]
}
catch (InterruptedException e) {
// Handle
}
你可以尝试类似的东西
arrayList.takeWhile[!monitor.cancelled].forEach[ ... do stuff ...]
if ( monitor.cancelled ) { statusFlag = Status.CANCEL_STATUS }
takeWhile 延迟执行,因此它应该按预期工作并在正确的时刻中断(内存可见性允许,我希望 monitor.cancelled 是易变的)。
不确定状态标志如何出现在这里,您可能还需要在一个或两个闭包中添加检查。
你说得对,Xtend 不支持 break and continue。 将中断特定功能移动到 java 并在 xtend 中使用它。