在Java中的外观:
public void perform() {
outer: while (someCondition) {
while(someCollection.nonEmpty() && anotherCondition) {
if (otherCondition)
break outer;
else doSomething();
}
try {
doSomethingWithException();
} catch (Exception e) {
break; // breaks outer loop
}
doSomethingAnother();
}
}
谁能在Scala中建议一个替代方案?
我已经知道util.control.Breaks,但是还有其他选择吗?
最佳答案
您可以将代码重写为以下形式:
var continueWhileCondition = true
while (someCondition && continueWhileCondition) {
while (someOtherCondition) {
if (someThirdCondition) {
continueWhileCondition = false
}
}
if (continueWhileCondition) {
//here do try/catch
}
}
只需添加会在一段时间内中断的其他条件。
但这不是FP解决方案,您应该真正使用递归。