Scala高阶函数实践
高阶函数主要有两种:一种是将一个函数当做另外一个函数的参数(即函数参数);另外一种是返回值是函数的函数。
package sparkCore
/**
* Created by zhen on 2018/3/12.
*/
object HigherOrderFunction {
//定义普通函数
def add(left:Double,right:Double): Double ={
left + right
}
//作为值的函数
val valueAdd = add _ //使用" _"匹配参数
//测试匿名函数
val anonymousFunctionAdd = (left:Double,right:Double) => println(s"anonymousFunctionAdd:left add right equal ${left + right}")
val left = 2.34
val right = 6.78
//测试高阶函数
def higherOrderFunction(f : (Double) => Double) = f(3 * left)
//高级函数变形
def anotherHigherOrderFunction(left:Double) = (right:Double) => left * right def main(args: Array[String]) {
//调用作为值的函数
valueAdd(2.67,4.54)
//调用匿名函数
anonymousFunctionAdd(3.6,4.5)
//调用高阶函数
println(higherOrderFunction(x=>3*x).formatted("%.2f"))
//调用高级函数变形
val another = anotherHigherOrderFunction(left)
println(another(right).formatted("%.2f"))
}
}
结果:

Scala高阶函数实践的更多相关文章
- scala高阶函数类型推断什么时候失效?
class TypeInfer(self: Int, other: Int) { def test(num: Int, word: String, fun1: (Int, Int) => Int ...
- Scala高阶函数
1.作为参数的函数 函数可以作为一个参数传入到一个方法当中去 def main(args: Array[String]): Unit = { val myFunc1 =(x:Int) =>{ x ...
- Scala高阶函数与泛型
1. Scala中的函数 在Scala中,函数是“头等公民”,就和数字一样.可以在变量中存放函数,即:将函数作为变量的值(值函数). 2. scala中的匿名函数,即没有函数名称的函数,匿名函数常作为 ...
- Scala高阶函数示例
object Closure { def function1(n: Int): Int = { val multiplier = (i: Int, m: Int) => i * m multip ...
- Scala中的构造器和高阶函数
构造器 在定义类时可以定义主构造器.主构造器可以同时声明字段. /** * 主构造器 * @author Administrator */ //在scala中,类和方法交织在一起 class Test ...
- Thinking in scala (6)----高阶函数----返回一个函数
在Thinking in scala (5)----高阶函数* 里面,我们演示了如何把一个函数作为参数传递给另外一个函数. 在本文里面,我们来演示函数式编程另外一个重要的特性:返回一个函数.首先来看这 ...
- Thinking in scala (5)----高阶函数*
高阶函数是函数式编程里面一个非常重要的特色,所谓的高阶函数,就是以其它函数作为参数的函数. 下面以一个小例子演示Scala的高阶函数特性,非常有意思,也非常强大. 首先看这么一个程序: code1: ...
- Scala - 快速学习08 - 函数式编程:高阶函数
函数式编程的崛起 函数式编程中的“值不可变性”避免了对公共的可变状态进行同步访问控制的复杂问题,能够较好满足分布式并行编程的需求,适应大数据时代的到来. 函数是第一等公民 可以作为实参传递给另外一个函 ...
- spark快速开发之scala基础之5高阶函数,偏函数,闭包
高阶函数 高阶函数就是将函数作为参数或者返回值的函数. object function { def main(args: Array[String]): Unit = { println(test(f ...
随机推荐
- mysql 开发进阶篇系列 7 锁问题(innodb锁争用情况及锁模式)
1 .获取innodb行锁争用情况 1.1 通过检查innodb_row_lock状态变量来分析系统上的行锁的争夺情况 SHOW STATUS LIKE 'innodb_row_lock%' 通过in ...
- 《HelloGitHub月刊》第 01 期
<HelloGitHub月刊> 因为现在这个项目只有我自己做,只敢叫"月刊",希望有志同道合者,快点加入到这个项目中来!同时,如果您有更好的建议或者意见,欢迎联系我.联 ...
- [Android 泥水匠] Android基础 之一:浅谈Android架构到HelloWorld案例的剖析
作者:泥沙砖瓦浆木匠网站:http://blog.csdn.net/jeffli1993个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 交流QQ群:[编程之美 365234583] ...
- Web Service 部分内容简述(1)
1.什么是Web服务(web service) Wb服务是一种可以用来解决跨网络应用集成问题的开发模式,是基于网络的.分布式的模块化组件,它执行特定的任务遵守具体的技术规范,这些规范使得Web Ser ...
- 最好用的编辑器之一:Vim-Go环境搭建
本文由Librant发表 如果说在Linux环境下,什么编辑器最好用,如果我说是VIM,估计会有一大部分人嗤之以鼻,怎么可能.VIM可能是他用过众多编辑器最难用的一个.在我司用的是云虚拟机,说实话吧, ...
- 关于 Uboot 中有趣的 0xdeadbeef 填充
在 Uboot 的 Start.S 中存在以下源码: .globl _start _start: b start_code ldr pc, _undefined_instruction ldr pc, ...
- IntelliJ IDEA为类和方法自动添加注释
1.为类添加自动注释模版 File-->Settings-->Editor-->File and Code Templates /** * @author :mmzs * @date ...
- Visual Studio 2017 - Windows应用程序打包成exe文件(1)- 工具简单总结
最近有对一个Windows应用程序少许维护和修改.修改之后要发布新的exe安装文件,打包exe文件时,遇到了很头疼的问题,还好最后解决了,记录一下. Visual Studio版本:Visual St ...
- [转]Angular4 数据请求 POST、GET
本文转自:https://blog.csdn.net/dailuwen/article/details/79375980 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog ...
- 第一册:lesson seventeen。
原文:How do ;you do? A:Come and meet our employees,Mr.B. B:Thank you Mr.A. A:This is ...and this is .. ...