返回顶部
首页 > 资讯 > 移动开发 >2023_Spark_实验七:Scala函数式编程部分演示
  • 904
分享到

2023_Spark_实验七:Scala函数式编程部分演示

sparkscala大数据 2023-10-23 12:10:05 904人浏览 独家记忆
摘要

Scala中的函数 在Scala中,函数是“头等公民”,就和数字一样。可以在变量中存放函数,即:将函数作为变量的值(值函数)。 def myFun1(name:String):String="Hello " + nameprintln(my

Scala中的函数

在Scala中,函数是“头等公民”,就和数字一样。可以在变量中存放函数,即:将函数作为变量的值(值函数)。

def myFun1(name:String):String="Hello " + nameprintln(myFun1("Tom"))def myFun2():String = "Hello World"//值函数:将函数作为变量的值val v1 = myFun1("Tom")val v2 = myFun2()//再将v1 付给myFun1(v1)println(myFun1(v1))

匿名函数

//匿名函数(x:Int) => x*3//例子:(1,2,3)---》(3,6,9)Array(1,2,3).map((x:Int) => x*3)//由于map方法接收一个函数参数,我就就可以把上面的匿名函数作为参数传递给map方法

带函数参数的函数,即:高阶函数

示例1:

(*)首先,定义一个最普通的函数

(*)再定义一个高阶函数

(*)分析这个高阶函数调用的过程

//定义一个最普通的函数def fun1(name:String):String = "Hello "+ nameimport scala.math._//定义高阶函数:带有函数参数的函数def someAction(f:(Double) => Double) =f(10)//测试someAction(sqrt)

示例2:

//另外一个例子def mytest(x:Int,y:Int) :Int ={x*y + 100}//定义一个高阶函数def myFunction(f:(Int,Int) =>Int,x:Int,y:Int) = f(x,y)//测试myFunction(mytest,1,2)

在这个例子中,首先定义了一个普通的函数mytest,然后定义了一个高阶函数myFunction;myFunction接收三个参数:第

一个f是一个函数参数,第二个是x,第三个是y。而f是一个函数参数,本身接收两个Int的参数,返回一个Int的值。

闭包

就是函数的嵌套,即:在一个函数定义中,包含另外一个函数的定义;并且在内函数中可以访问外函数中的变量。

测试上面的函数:

def mulBy(factor:Double)=(x:Double)=>x*factor//变量val triple = mulBy(3) //表示乘以3倍的操作val half = mulBy(0.5) //表示除以2倍的操作//调用println(triple(10)+ " " + half(8))

柯里化:Currying

柯里化函数(Curried Function)是把具有多个参数的函数转换为一条函数链,每个节点上是单一参数。

一个简单的例子:

//柯里化//一个普通的函数def mulByOneTime(x:Int,y:Int) = x + y//柯里化函数def mulByOneTime1(x:Int) =(y:Int) =>x * y//简写的方式def mulByOneTime2(x:Int)(y:Int)= x * y//测试mulByOneTime(6,7)mulByOneTime1(6)(7)mulByOneTime2(6)(7)

高阶函数示例

示例1:

//map//在列表中的每个元素上计算一个函数,并且返回一个包含相同数目元素的列表val numbers = List(1,2,3,4,5,6,7,8,9,10)numbers.map((i:Int)=>i*2)

示例2:

//foreach//foreach 和 map 相似 ,只不过它没有返回值,foreach只要是为了对参数进行作用val numbers = List(1,2,3,4,5,6,7,8,9,10)numbers.foreach((i:Int)=>i*2)

示例3:

//filter//移除任何使得传入的函数返回false的元素val numbers = List(1,2,3,4,5,6,7,8,9,10)numbers.filter((i:Int) => i%2==0)

示例4

//zip//zip把两个列表的元素合成一个由元素对组成的列表里List(1,2,3).zip(List(4,5,6,7))

示例5:

//partition//partition根据断言函数的返回值对列表进行拆分val numbers = List(1,2,3,4,5,6,7,8,9,10)numbers.partition((i:Int) =>i%2==0)

在这个例子中,可以被2整除的被分到一个分区;不能被2整除的被分到另一个分区。

示例6:

//find//find返回集合里第一个匹配断言函数的元素val numbers = List(1,2,3,4,5,6,7,8,9,10)numbers.find(_ % 3 ==0)

示例7:

//flatten//flatten可以把嵌套的结构展开List(List(1,2,3),List(4,5,6)).flatten

示例8:

//flatMap//flatMap 是一个常用的combinator,它结合了map 和 flatten的功能val myList = List(List(1,2,3),List(4,5,6))myList.flatMap(x => x.map(_ * 2))

在这个例子中,分为两步:

将(1,2,3)和(4,5,6)这两个集合合并成一个集合

再对每个元素乘以2

来源地址:https://blog.csdn.net/pblh123/article/details/133070315

--结束END--

本文标题: 2023_Spark_实验七:Scala函数式编程部分演示

本文链接: https://lsjlt.com/news/440350.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 2023_Spark_实验七:Scala函数式编程部分演示
    Scala中的函数 在Scala中,函数是“头等公民”,就和数字一样。可以在变量中存放函数,即:将函数作为变量的值(值函数)。 def myFun1(name:String):String="Hello " + nameprintln(my...
    99+
    2023-10-23
    spark scala 大数据
  • JavaScript函数式编程示例分析
    目录函数式编程函数柯理化(Curring)Compose场景案例总结函数式编程 1.函数式编程指的是函数的映射关系 2.vue3、react16.8的函数组件推动了前端函数编程 3....
    99+
    2022-11-13
    JavaScript函数式编程 JS函数式编程
  • JavaScript函数式编程的示例分析
    这篇文章给大家分享的是有关JavaScript函数式编程的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。看过许多关于函数式编程的讲解,但是其中大部分是停留在理论层面,还有...
    99+
    2024-04-02
  • python函数式编程的示例分析
    这篇文章给大家分享的是有关python函数式编程的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗...
    99+
    2023-06-14
  • js中函数式编程的示例分析
    这篇文章主要为大家展示了“js中函数式编程的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“js中函数式编程的示例分析”这篇文章吧。(1)平常写的函数大多...
    99+
    2024-04-02
  • 汇编语言的函数式编程实例分析
    这篇文章主要介绍了汇编语言的函数式编程实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇汇编语言的函数式编程实例分析文章都会有所收获,下面我们一起来看看吧。一切都是为了消除副作用要了解函数式编程,我们需要首...
    99+
    2023-06-27
  • Python函数式编程装饰器的示例分析
    这篇文章给大家分享的是有关Python函数式编程装饰器的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、装饰器的本质:装饰器(decorator)本质是函数闭包(function closure)的语法...
    99+
    2023-06-29
  • JavaScript中的函数式编程实例分析
    这篇文章主要介绍“JavaScript中的函数式编程实例分析”,在日常操作中,相信很多人在JavaScript中的函数式编程实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript中的函数式...
    99+
    2023-07-05
  • Golang函数式编程深入分析实例
    目录定义集合功能函数实现具体功能函数测试集合功能泛型实现定义集合功能函数 首先定义用于测试的结构体WorkWith: // WorkWith is the struct we'll ...
    99+
    2023-01-10
    Golang函数式编程 Go函数式编程
  • JavaScript正则表达式校验与递归函数实际应用的示例分析
    小编给大家分享一下JavaScript正则表达式校验与递归函数实际应用的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
    99+
    2024-04-02
  • 【Kotlin】函数式编程 ③ ( 早集合与惰性集合 | 惰性集合-序列 | generateSequence 序列创建函数 | 序列代码示例 | take 扩展函数分析 )
    文章目录 一、及早集合与惰性集合二、惰性集合-序列三、generateSequence 序列创建函数1、函数简介2、函数原型3、函数简介4、使用示例 四、序列代码示例1、使用传统的函数式编...
    99+
    2023-08-31
    kotlin 惰性集合 序列 Sequence 及早集合
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作