折叠的基本介绍和使用 | 学习笔记

简介: 快速学习折叠的基本介绍和使用

开发者学堂课程【Scala 核心编程 - 进阶折叠的基本介绍和使用学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/610/detail/9055


折叠的基本介绍和使用


内容介绍

一、基本介绍

二、应用案例


一、基本介绍

fold 函数将上一步返回的值作为函数的第一个参数继续传递参与运算直到 list 中的所有元素被遍历。

1.可以把 reduceLeft 看做简化版的 foldLeft 也就是说foldLeft更加强大。

为什么呢?我们看reduceLeft 底层代码,但是我们也可以在源码上追加

def reduceLeft[B>:A] (@deprecatedName(‘f)op:(B,A)=>B):B=if (isEmpty) throw new UnsupportedOperationaException(“empty.reduceLeft”)

Else tail foldLeft[B](head)(op)

这里就用到了 foldLeft,这两个区别在什么呢

reduceLeft跟这个折叠最大的区别是,我们这个向左折叠他会首先有一个同,然后传入折叠的具体函数

如何理解:

def reduceleLeft[B>A](@deprecatedName(‘f)op:(B,A):B =if (isEmpty) throw new UnspportedOper ationException (“empty、 reduceLeft”) else tail.foldLeft[B](head)(op)

可以看到 reduceLeft 就是调用的 foldLeft[B](head),并且是默认从集合head 元素开始操作的.

2.相关函数:fold、foldLeft、foldRight,可以参考 reeduce 的相关方法理解


二、应用案例

Object FoldDemo01{

Def main (args;Array[string]:Unit={

Val list=List(1,2,3,4)

Def=minus(num:Int,num2:Tnt):Tnt={num1-num2}

//说明

//1、折叠的理解化和化简的运行机制几乎一样.

//理解

List,foldLeft(5)(minus)理解成

List(5,1,2,3,4)List reduceLeft(minus)

//步骤(5-1)

//步骤((5-1)-2)

//步骤(((5-1)-2)-3)

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

Drinln (list,foldLeft(5)(minus))//函数柯里化

////理解 Liet,foldList(5)(minus)理解成List(1,2,3,4,5)

List,reduceRight(minus)

//步骤(4-5)

//步骤(3-(4-5)

//步骤(2-(3-(4-5)))

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

PintLn(List、foldRight(5)(minus))//

目录
打赏
0
0
0
0
310
分享
相关文章
|
5月前
第一章数组
第一章数组
49 0
深度学习笔记(十四):Transormer知识总结
关于深度学习中Transformer模型的知识总结,涵盖了Self-attention机制、QKV、Multi-head attention、位置编码和并行运算等关键概念,以及如何在PyTorch中实现Self-attention。
95 1
《手把手教你》系列技巧篇(三十三)-java+ selenium自动化测试-单选和多选按钮操作-上篇(详解教程)
【4月更文挑战第25天】本文介绍了自动化测试中如何处理单选和多选按钮的操作,包括它们的定义、HTML代码示例以及如何判断和操作这些元素。文章通过一个简单的HTML页面展示了单选和多选框的示例,并提供了Java+Selenium实现的代码示例,演示了如何检查单选框是否选中以及如何进行全选操作。
92 0
字符串的进阶练习案例(接上一节)
字符串的进阶练习案例(接上一节)
61 0
Markdown语法-从基础到进阶
Markdown语法-从基础到进阶
273 0
循环控制基本介绍和入门|学习笔记
循环控制听其名而知其意,就是让一段代码可以循环的执行。
111 0
循环控制基本介绍和入门|学习笔记
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等