源碼分析
def seq: TraversableOnce[A]
上面兩段代碼是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