ループ内に高価な計算があり、計算によって生成された最大値を見つける必要がありますが、たとえば、それが LIMIT に等しい場合は、計算を停止してアキュムレータを返したいと思います。
再帰によって簡単に実行できます。
val list: List[Int] = ???
val UpperBound = ???
def findMax(ls: List[Int], max: Int): Int = ls match {
case h :: rest =>
val v = expensiveComputation(h)
if (v == UpperBound) v
else findMax(rest, math.max(max, v))
case _ => max
}
findMax(list, 0)
私の質問: この動作テンプレートに名前があり、scala コレクション ライブラリに反映されているかどうか?
更新: Scala で N 回まで、または条件が満たされるまで何かを行う- 興味深いアイデアがあります (遅延と検索または存在を最後に使用する) が、それは私の特定のケースに直接適用できないか、アキュムレータを追跡するために可変変数が必要です。