2016-12-01 39 views

回答

5

fold

使用fold當你想聚集一組爲單精度值。在這裏我們說,從零開始,並將每個連續的元素添加到前一個元素,然後在集合耗盡後返回結果。

scala> List(1, 2, 3).foldLeft(0){ (a, b) => a + b } 
res10: Int = 6 

注意fold是專爲並行計算,但foldLeftfoldRight在什麼類型的,他們可以應用到條件更強大。

map

使用map當你想給一個函數應用到每個元素的集合,並返回另一組的結果。

scala> List(1, 2, 3).map(x => x + x) 
res12: List[Int] = List(2, 4, 6) 

foreach

使用foreach當你不想返回任何東西,但需要一定的副作用,如。將每個值保存到數據庫。

List(1, 2, 3).foreach(x => saveToDB(x)) 
3

如果你想減少列表中,您使用的摺疊

List(1,2,3,4).fold(0){_+_} <<-- gives you sum of elements in list 

的foreach用於遍歷列表,例如打印所有元素

List(1,2,3,4).foreach(println) 
+4

'foreach'通常是錯誤的方式,'map'是大多數情況下你想要的。 – Reactormonk

+0

@Reactormonk'foreach'通常是錯誤的方式,但我看到使用'foreach'做手動'map'的人數與我使用'foreach'做人工摺疊'的人數一樣' – naomik

+0

我見過我也使用'map'來做一個'foreach' – Chirlo

5

在我的理解,當有需要爲列表中的每個元素應用函數,我們使用摺疊函數,對嗎?

沒有。當您想要得到的結果是全部列表中的元素時,可以使用fold。也就是說,你fold列表到一個結果

要將相同的功能上一個列表中的每個元素,多爲副作用,如印刷,篩選,使用foreach,故名。

相關問題