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) の間、反復処理を行いたいと考えています。上記のコードは、実行している double (1.0、2.0、3.0) の次のリストを返す必要があります。ただし、反復回数を制限したい。