如何在foldLeft简单列表时提前破解?

时间:2016-11-23 19:43:26

标签: scala loops break foldleft

这是我的问题的简化版本,我想在a.size == 7的折叠中满足if条件后停止折叠返回值。

class test1 {

  def test(a : List[Int]): Int = {
    val list = a.foldLeft(if(a.size == 7) 1000 else 0)((b,a) => a + b )

    list
  }
}



object test1 extends App{
  val temp1 =  new test1()

  val list: List[Int] = List(1,2,3,4,5,6,7)

  println(temp1.test(list))


}

正如您所看到的那样,第一次折叠时满足条件,但有时可以在第二次或第一次折叠时满足。不知道从哪里可以获得任何帮助以获得赞赏

1 个答案:

答案 0 :(得分:3)

尝试下一个模板:

def Process(A: List[Int]) : Int = {

  def proces(a: List[Int], acc: List[Int]): Int = a match {
    case List () => -1
    case h :: tail => if (acc.length == 10) 1000 else proces (tail, h :: acc)
  }
  proces(A, List() )
}