Scala初体验:高阶函数
来源:互联网 发布:淘宝书店哪家好 编辑:程序博客网 时间:2024/05/16 18:25
Scala可以把函数作为参数传递给另一个函数。即可以写出这样的高阶函数函数:f(g(x)) 。下面举一个高阶函数的例子。
假如要求写一个求和函数, 它接受一个参数f(n),返回一个从整数a到整数b的求和函数。
def sum(f: Int => Int): (Int,Int) => Int ={ def sumF(a: Int ,b: Int): Int= if(a > b) 0 else f(a)+sumF(a+1,b) sumF // sum need to return a function }
sum(x => x*x) 意为sum接受一个 f : x => x*x 的函数作为参数所返回的对x的平方求和的函数。这个新得到的二阶函数有两个参数 ,sum(x => x*x)(1,3) 即为从1到3求其平方和。
类似的还可以写出sum(x => x*x*x + 2*x*x + 4*x+5)等二阶函数。
同时也应该注意到sum函数中嵌套了sumF函数,因为sum必须返回一个函数而不是数值,所以定义了一个sumF函数作为返回的函数。
拓展: 也可以使用Currying ,sum 返回 Int 值,利用Curring构造函数。这时,sum不再是高阶函数。
def sum(f: Int => Int)(a:Int)(b:Int) : Int={ if(a >b) 0 else f(a)+ sum(f)(a+1)(b)}val sumSquare = sum(x => x*x)_
0 0
- Scala初体验:高阶函数
- Scala函数初体验
- Scala高阶函数
- Scala 高阶函数
- scala------高阶函数
- Scala高阶函数
- scala高阶函数
- scala高阶函数
- scala-高阶函数
- Scala高阶函数
- Scala 高阶函数
- scala高阶函数
- Scala高阶函数
- Scala高阶函数
- Scala-高阶函数
- scala入门-09 scala高阶函数
- Scala中的高阶函数
- scala的高阶函数
- mac linux vi命令详解(类unix系统通用命令行编辑工具)
- 【js学习笔记-109】-------SVG 可伸缩的适量图形
- (程序员面试题)二叉树的基本操作
- matlab自带图像所在路径
- How to Tune Java Garbage Collection
- Scala初体验:高阶函数
- 全自动过滤器处理农村生活污水技术指南
- 【嵌入式Linux学习七步曲之第一篇 Linux主机开发环境】虚拟机下Linux和windows的文件共享――共享方式
- iOS 自定义百度地图标注气泡
- 生产者与消费者(二)
- 叉包舍 - PPPoE之常见拨号错误代码及处理
- Xmega的ASF真的十分强大.
- Android下如何计算两经纬点之间距离?
- freemarker 生成word