匿名関数から早く抜けるために return キーワードが使用されている場合に報告します。 非ローカルの return は、scala.runtime.NonLocalReturnException をスローおよび catch して実装されます。 プログラマーがこれを意図していることはほぼありません。 例外のスローおよび catch には隠れたパフォーマンスコストがあるため、問題となる場合があります。

さらに、リークがある実装でもあります。すべての例外をキャッチするための例外ハンドラーは NonLocalReturnException をインターセプトできます。


def foo(numbers: Seq[Int]): Int =
  numbers.map { n =>
    if (n > 5)
      return 0 // highlighted
    n * 2
  }.sum