scala基础26-高阶函数
2016-07-26 01:21
295 查看
import scala.math._ object Test { def main(args: Array[String]): Unit = { //map迭代集合中的每一个元素,map的参数是一个函数(作为参数的函数又名高阶函数) (1 to 9).map("*" * _).foreach(println) (1 to 9).filter(_ % 2 == 0).foreach(println) //reduceLeft: 首先应用于前两个元素,然后再应用于第一次应用的结果和接下去的一个元素,直至整个列表 println((1 to 3).reduceLeft(_ * _)) //sortWith:自定义排序算法 "Spark is the most exciting thing happening in big data tody".split(" ").sortWith((a, b) => a > b).foreach(println) //ceil:向上取整函数 val fun = ceil _ val num = 3.14 println(fun(num)) //4.0 Array(3.14, 1.44, 2.0).map(fun).foreach(println) //右侧是一个匿名函数,参数为x val triple = (x: Double) => 3 * x //两种不同的写法 Array(3.14, 1.44, 2.0).map((x: Double) => 3 * x).foreach(println) Array(3.14, 1.44, 2.0).map{(x: Double) => 3 * x} //标准定高阶函数,如下,参数是一个函数,参数是Double类型,返回值也是Double类型 def high_order_func(f: (Double) => Double) = f(1.25) println(high_order_func(ceil)) println(high_order_func(sqrt)) //sqrt开平方 def mulBy(factor: Double) = (x: Double) => factor * x val quintuple = mulBy(5) println(quintuple(20)) //逐步变简的写法 println(high_order_func((x: Double) => 3 * x)) println(high_order_func((x) => 3 * x)) println(high_order_func(x => 3 * x)) println(high_order_func(3 * _)) //括号()中的是参数 val fun2 = 3 * (_: Double) val fun3: (Double) => Double = 3 * _ println(fun2(2.2)) println(fun3(2)) } }
相关文章推荐
- SCU 4529 An Easy Problem(强连通分量+缩点+最小路径覆盖+剪枝)
- HDU 2680 Choose the best route 最短路、Dijkstra、多源化单源最短路
- HDU4430->二分&&枚举
- 一个栈溢出的实验
- DEVO10美国手改日本手
- 【转】R语言知识体系概览
- Code forces 612C-----栈
- String和StringBuffer
- const关键字
- HDU5515-Game of Flying Circus
- 发布前准备和nginx在Linux安装
- SCU 4526 最短路(dijkstra+枚举+BFS)
- 【转】聊聊HTTPS和SSL/TLS协议
- $.when(deferreds)
- php学习笔记(四)插入内容
- 最全面的Android热修复技术
- 基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(二)
- servlet--Cookie浏览器缓存
- template_1
- MySQL-5.6.13免安装版配置方法