限制 foldLeft 中的迭代次数。我想根据特定条件终止 foldLeft 的迭代。条件是从不同的变量而不是从列表元素评估的。
我尝试使用 takeWhile 来限制迭代;但是 takeWhile 的谓词作用于列表的元素而不是外部值。
val numberList = List (1.0, 2.0, 3.0, 4.5, 5.5)
var sampleList = List [Double]()
var sum = 0.0
val sumLimit = 6.0
var param = (sampleList, sum, sumLimit)
var filteredList = numberList.foldLeft(param) {
(p, element) => {
if (p._2 < p._3) {
sampleList = p._1 :+ element
(sampleList, p._2 + element, p._3)
} else {
(p._1, p._2, p._3)
}
}
}
以上代码迭代5次;但是我希望它在 (p._2 < p._3) 时进行迭代。上面的代码应该返回它正在执行的以下双精度列表(1.0、2.0、3.0);但是我想限制迭代次数。