foldLeft 在简单列表上时如何提前中断?
How to break early when foldLeft over simple List?
这是我的问题的简化版本,我想停止折叠 return 折叠中满足 if 条件后的值 a.size == 7.
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))
}
如您所见,条件在第一次折叠时就满足,但也有可能在第二次或第一次折叠时满足的情况。不知道从这里去哪里任何帮助不胜感激
试试下一个模板:
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() )
}
这是我的问题的简化版本,我想停止折叠 return 折叠中满足 if 条件后的值 a.size == 7.
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))
}
如您所见,条件在第一次折叠时就满足,但也有可能在第二次或第一次折叠时满足的情况。不知道从这里去哪里任何帮助不胜感激
试试下一个模板:
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() )
}