Scala函数式编程进阶
来源:互联网 发布:成都数据恢复价格表 编辑:程序博客网 时间:2024/04/30 06:18
/**
* 函数式编程进阶
* 1,函数和变量一样作为Scala语言的一等公民,函数可以直接赋值给变量;
* 2,函数更长用的方式是匿名函数,定义的时候只需要说明输入参数的类型和函数体即可,不需要名称,但是如果你要使用的话,一般会把这个
* 匿名函数赋值给一个变量(其实是val常量)
* 3,函数可以作为参数传递给函数,这极大简化了编程方法,
* 第一,以前java是new出一个接口实例,并且在接口实例的回调方法callback中来实现业务逻辑,现在是把回调方法callback传递给我的
* 函数,且在函数体中直接使用,提高了开发效率
* 第二,这种方式非常方便编写负责的业务逻辑和控制逻辑,对于图计算、机器学习、深度学习等而言至关重要
*
* 函数作为函数的参数传递的编程方式称之为高阶函数的编程方式,Spark源码和应用程序开发中至少60%都是这种代码,必须务必一定要掌握
*
*/
object HelloFunctionalProgramming2 {
def main(args: Array[String]): Unit = {
/**
* 函数式编程进阶
* 1,函数和变量一样作为Scala语言的一等公民,函数可以直接赋值给变量;
*
*/
val hiData = hiBigData _
hiData("Spark")
/**
* 函数式编程进阶
* 2,函数更长用的方式是匿名函数,定义的时候只需要说明输入参数的类型和函数体即可,不需要名称,但是如果你要使用的话,一般会把这个
* 匿名函数赋值给一个变量(其实是val常量)
*
*/
val f = (name : String ) => {
println("Hi jianxie 111, "+name)
println("Hi jianxie 222, "+name)
}
f("Kafka")
/**
* 函数式编程进阶
* 3,函数可以作为参数传递给函数,这极大简化了编程方法,
* 第一,以前java是new出一个接口实例,并且在接口实例的回调方法callback中来实现业务逻辑,现在是把回调方法callback传递给我的
* 函数,且在函数体中直接使用,提高了开发效率
* 第二,这种方式非常方便编写负责的业务逻辑和控制逻辑,对于图计算、机器学习、深度学习等而言至关重要
*
*/
def getName(func : (String) => Unit ,name:String){
func(name)
}
getName(f,"Docker")
Array(1 to 10: _* ).map{ (item: Int) =>2 * item }.foreach{ x => println(x) }
/**
* Currying 函数写法,必须掌握这种写法,只要是复杂的Scala函数式编程代码就一定会使用这种写法
*
*/
def funcResult(message :String) = (name:String) => println(message + ":" + name)
funcResult("Hello")("Java")
val result = funcResult("Hello")
result("Ruby")
}
def hiBigData(name:String){
println("Hi "+ name)
}
}
* 函数式编程进阶
* 1,函数和变量一样作为Scala语言的一等公民,函数可以直接赋值给变量;
* 2,函数更长用的方式是匿名函数,定义的时候只需要说明输入参数的类型和函数体即可,不需要名称,但是如果你要使用的话,一般会把这个
* 匿名函数赋值给一个变量(其实是val常量)
* 3,函数可以作为参数传递给函数,这极大简化了编程方法,
* 第一,以前java是new出一个接口实例,并且在接口实例的回调方法callback中来实现业务逻辑,现在是把回调方法callback传递给我的
* 函数,且在函数体中直接使用,提高了开发效率
* 第二,这种方式非常方便编写负责的业务逻辑和控制逻辑,对于图计算、机器学习、深度学习等而言至关重要
*
* 函数作为函数的参数传递的编程方式称之为高阶函数的编程方式,Spark源码和应用程序开发中至少60%都是这种代码,必须务必一定要掌握
*
*/
object HelloFunctionalProgramming2 {
def main(args: Array[String]): Unit = {
/**
* 函数式编程进阶
* 1,函数和变量一样作为Scala语言的一等公民,函数可以直接赋值给变量;
*
*/
val hiData = hiBigData _
hiData("Spark")
/**
* 函数式编程进阶
* 2,函数更长用的方式是匿名函数,定义的时候只需要说明输入参数的类型和函数体即可,不需要名称,但是如果你要使用的话,一般会把这个
* 匿名函数赋值给一个变量(其实是val常量)
*
*/
val f = (name : String ) => {
println("Hi jianxie 111, "+name)
println("Hi jianxie 222, "+name)
}
f("Kafka")
/**
* 函数式编程进阶
* 3,函数可以作为参数传递给函数,这极大简化了编程方法,
* 第一,以前java是new出一个接口实例,并且在接口实例的回调方法callback中来实现业务逻辑,现在是把回调方法callback传递给我的
* 函数,且在函数体中直接使用,提高了开发效率
* 第二,这种方式非常方便编写负责的业务逻辑和控制逻辑,对于图计算、机器学习、深度学习等而言至关重要
*
*/
def getName(func : (String) => Unit ,name:String){
func(name)
}
getName(f,"Docker")
Array(1 to 10: _* ).map{ (item: Int) =>2 * item }.foreach{ x => println(x) }
/**
* Currying 函数写法,必须掌握这种写法,只要是复杂的Scala函数式编程代码就一定会使用这种写法
*
*/
def funcResult(message :String) = (name:String) => println(message + ":" + name)
funcResult("Hello")("Java")
val result = funcResult("Hello")
result("Ruby")
}
def hiBigData(name:String){
println("Hi "+ name)
}
}
1 0
- Scala函数式编程进阶
- Scala 函数式编程进阶 (1)
- Scala学习之一函数式编程进阶
- scala学习六:scala函数式编程进阶
- scala之函数编程进阶
- Scala 函数式编程进阶 最重要的内容
- Scala 函数式编程进阶 2 更详 代码说明
- Scala 函数式编程
- Scala函数式编程
- Scala函数式编程
- Scala 函数式编程
- scala-函数式编程
- Scala函数式编程
- Scala进阶编程指南
- Scala函数进阶
- 【Scala】Scala函数式编程初探
- scala学习五:scala函数式编程
- Scala函数式编程进阶(匿名函数、高阶函数、函数类型推断、Currying)与Spark源码鉴赏
- CentOS7 U盘安装
- python-read the file contains Chinese
- 如何美化odoo的登录界面?
- ajax+FormData实现图片上传
- network_tcp三次握手
- Scala函数式编程进阶
- 所谓更牛,就是换个罪受!——《时间的朋友2016跨年演讲》深入笔记
- 使用angularjs的ng-options时如何设置默认值(初始值)
- [腾讯校招] 微信红包
- Android 抢红包
- Java进阶面试题
- tomcat6 启动编码配置
- FreeRTOS FreeRTOSConfig.h内容定义
- SecureCRT通过堡垒机自动登录服务器的方法