внутренняя l oop (хрупкая) альтернатива с той же производительностью - PullRequest
0 голосов
/ 30 марта 2020

как это выглядит в 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, но есть ли другие альтернативы?

1 Ответ

0 голосов
/ 31 марта 2020

Вы можете переписать свой код примерно так:

  var continueWhileCondition = true
  while (someCondition && continueWhileCondition) {
    while (someOtherCondition) {
      if (someThirdCondition) {
        continueWhileCondition = false
      }
    }
    if (continueWhileCondition) {
      //here do try/catch
    }
  }

Просто добавьте дополнительное условие, которое будет нарушено. Но это не решение FP, и вы действительно должны использовать рекурсию.

...