我在一个循环中有一些昂贵的计算,我需要找到计算产生的最大值,但如果它等于 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 次或直到满足条件- 有一个有趣的想法(使用惰性并在最后找到或存在)但它并不直接适用于我的特定情况或需要可变 var 来跟踪累加器。