Scala函式式程式設計之fold摺疊

2021-09-17 19:34:39 字數 1008 閱讀 6198

fold函式將上一步返回的值作為函式的第乙個引數繼續傳遞參與運算,直到list中的所有元素被遍歷。

可以把reduceleft看做簡化版的foldleft。

如何理解:

def reduceleft[b >: a](@deprecatedname('f) op: (b, a) => b): b =

if (isempty) throw new unsupportedoperationexception("empty.reduceleft")

else tail.foldleft[b](head)(op)

大家可以看到. reduceleft就是呼叫的foldleft[b](head),並且是預設從集合的head元素開始操作的。

應用案例

// 摺疊

val list = list(1, 2, 3, 4)

def minus( num1 : int, num2 : int ): int =

//等價list(5,1,2,3,4)進行操作

// (((5-1)2)3)4 = -5

println(list.foldleft(5)(minus)) // 函式的柯里化

//等價 list(1,2,3,4,5) 進行操作

// 1-(2- (3- (4-5))) = 3

println(list.foldright(5)(minus)) //

SCALA函式式程式設計

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 scala的語法規定,將函式賦值給變數時,必須在函式後面加上空格和下劃線 正常宣告乙個帶有乙個字串型別引數,並返回unit型別的方法 sca...

Scala函式式程式設計

知識點1.scala的柯里化技術,允許將接受多個引數的函式,轉變為接受單一引數的函式 2.柯里化的作用可以允許使用者自建控制結構 object demo03 f1 a int,b int int def f11 a int b int f11 a int b int int def f2 a int...

Scala函式式程式設計

package com.yz6 import scala.collection.mutable.arraybuffer object test 定義乙個函式 軀殼 靈魂 def function0 name string unit println 你好 name 將乙個函式作為值傳遞給另乙個函式 在...