Scala中foldLeft的總結


源碼分析

def seq: TraversableOnce[A]
scala.collection.TraversableOnce

上面兩段代碼是scala.collection.TraversableOnce特質的foldLeft方法源代碼,實現了TraversableOnce trait的seq就是可迭代的集合;

  //將初始值z賦給result變量
    var result = z //遍歷seq集合,將result變量與seq集合取出的每個對象作為參數傳遞給op函數,每迭代一次op函數的返回值都賦給result變量
    this.seq foreach (x => result = op(result, x)) //最終獲取result作為返回值
    result
  val lst = List(20,30,60,90) //0為初始值,b表示返回結果對象(迭代值),a表示lst集合中的每個值
    val rs = lst.foldLeft(0)((b,a)=>{ b+a })

運行過程為:b=0+a,即0+20=20
b=20+a,即20+30=50
b=50+a,即50+60=110
b=110+a,即110+90=200
此處的a為循環取出集合中的值
最終結果: rs=200


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM