您的位置:首页 > 其它

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))
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: