Scala | 您所在的位置:网站首页 › scala函数式编程实例 › Scala |
目录 1.Scala中的函数 2.匿名函数:没有名字的函数 3.带函数参数的函数,即:高阶函数 4.高阶函数示例 5.闭包 6.柯里化:Currying 1.Scala中的函数在Scala中,函数是“头等公民”,就和数字一样。可以在变量中存放函数,即:将函数作为变量的值(值函数) 举例:使用Spark来执行WordCount var result = sc.textFile("hdfs://....").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect 2.匿名函数:没有名字的函数注:匿名函数:一个普通的函数,把返回值去掉,再把函数名和“def”去掉,再在"=“后面的加一个”>" 调用匿名函数作为函数参数 3.带函数参数的函数,即:高阶函数 (1)示例1: (a)首先,定义一个最普通的函数在这个例子中,首先定义了一个普通的函数mytest,然后定义了一个高阶函数myFunction;myFunction接收三个参数:第一个f是一个函数参数,第二个是x,第三个是y。而f是一个函数参数,本身接收两个Int的参数,返回一个Int的值。 4.高阶函数示例举例:查询能够被2整除的数字 //filter //移除任何使得传入的函数返回false的元素 numbers.filter((i:Int) =>i%2==0)说明:(i:Int)=>i%2==0 如果是true 就返回 (4)zip:合并两个集合 //zip //zip把两个列表的原色合成一个由元素对组成的列表 List(1,2,3).zip(List(4,5,6)) List(1,2,3).zip(List(4,5)) List(3).zip(List(4,5))举例:把能够被2整除的分成一个区,不能整除的分成另一个区 //partition //partition根据断言函数的返回值对列表进行拆分 numbers.partition((i:Int)=>i%2==0)在这个例子中,可以被2整除的被分到一个分区;不能被2整除的被分到另一个分区。 (6)find:查找第一个满足条件(断言)的元素 //find //find返回集合里第一个匹配断言函数的元素 numbers.find(_ % 3==0)执行过程: 1.将List(2,4,6,8,10)和List(1,3,5,7,9)调用了x=>x.map(_*2) 这里x代表某个List List(4, 8, 12, 16, 20) 和 List(2, 6, 10, 14, 18) 2.合并成一个List List(4, 8, 12, 16, 20, 2, 6, 10, 14, 18) 5.闭包就是函数的嵌套,即:在一个函数定义中,包含另外一个函数的定义;并且在内函数中可以访问外函数中的变量 测试上面的函数: 柯里化函数(Curried Function)是把具有多个参数的函数转换为一条函数链,每个节点上是单一参数。
|
CopyRight 2018-2019 实验室设备网 版权所有 |