8.函数式编程
来源:互联网 发布:java 数据字典 编辑:程序博客网 时间:2024/06/07 01:56
1.函数说明:
def map[U : ClassTag](f : T => U) : RDD[U] = withScope{
1.1 其中f 表示函数名称;T表示输入参数;U表示返回值类型
1.2 map是一个函数,其参数为(f : T => U)函数,只不过,函数名为f, 函数类型为 T => U
2.函数要点概述:
2.1 函数可以直接赋值给变量
2.2 函数更常用的方式是匿名函数,定义的时候只需要说明输入参数的类型和函数体即可,不需要名称,但是如果你需要使用的话,一般会把这个匿名函数赋值给一个变量(其实是val常量)
2.3 所以函数可以作为参数直接传递函数(其实现有点类似c语言中指向函数的指针),所带来的好处如下:
a ) 在使用java的时候我们可以利用多态,首先new出一个接口的实例回调方法来实现业务逻辑,现在直接把回调方法传递给我们的函数,且在函数体中直接使用,这
毫无疑问的简化了代码编写,提升了开发效率
b) 这种方式非常方便编写复杂的业务逻辑和控制逻辑;
2.4 闭包的概念:函数的返回值也可以是函数;当函数的返回类型是函数的时候,这个时候就表明Scala的函数实现了闭包;Scala是完全面向对象的语言,所以可以理解函 数本身也是一个对象,scala的参数也是对象成员,所以后续可以继续访问,这就是Scala实现闭包的原理
2.5 Currying : 柯里化函数也是函数式编程的一个重要内容,下面将会为你展示柯里化函数的具体应用实例:
object functionInScala { def main(args: Array[String]): Unit = { //1.将方法转换成函数 val helloworld = hello _ helloworld("robin") //2.匿名函数的使用 val f = (name:String) => println("Hi," + name) f("I am robin") //3.函数作为参数传递给函数实例;第一个参数是函数,第二个参数是名字 def getName(func:(String) => Unit,name:String) { func(name) } getName(f,"argument") //打印结果:Hi,argument //4. 这里1 to 10作为可变参数传入 val multipeArray = Array(1 to 10:_*).map{(item:Int) => 2 * item}.foreach(x => println(x)) //5.返回值是函数 ==> 闭包 def closure(message:String) = (name:String) => println(message + ":" + name) /** * 执行流程:returnFunc("Hello") 返回 (name:String) => println("Hello" + ":" + name) * ("World")又将参数传递给(name:String) => println("Hello" + ":" + name) * 即等同于: * val result = returnFunc("Hello") * result("World") */ closure("Hello")("World") //Currying 柯里化函数 } def hello(name : String): Unit = { println("hello " + name) }}
0 0
- 8.函数式编程
- 8.函数式编程和高阶函数
- 函数式编程
- 函数式编程
- 函数式编程
- 函数式编程
- 另类函数式编程
- 函数式编程(FP)
- 函数式编程
- 函数式编程
- 函数式编程
- 函数式编程!
- 函数式编程指南
- F# 函数式编程
- 什么是函数式编程
- 函数式编程扫盲
- 函数式编程初探
- 函数式编程
- 二分三分法总结
- GreenDao3编译出现 Error:Execution failed for task ':greendaotest:greendao'. > org.eclipse.jdt.
- jdbc prepareStatement 操作
- http_build_query()函数使用方法
- linux文件系统管理之文件与目录管理(终章)
- 8.函数式编程
- java web使用监听器实现定时周期性执行任务的功能
- Unity3D ShaderLab 修改渲染队列进行深度排序
- Qt使用多线程的一些心得——2.继承QObject的多线程使用方法
- navicat for mysql 远程连接数据库时出现2003-Can't connect to Mysql on '主机名'(10061)解决方法
- 《近匠》专访 SENSORO CTO 赵东炜:物联网行业发展分析
- 解析类路径下properties文件
- 编写一个函数。函数的3 个参数是一个字符和两个整数。字符参数是需要输 出的字符。第一个整数说明了在每行中该字符输出的个数,第二个整数指的是需 要输出的行数。编写一个调用该函数的程序
- 硬件锁使用说明