1.scala中,接受函数参数,或者是返回函数的函数,被称为高阶函数。
1.1接受函数作为参数的示例:
object test{
def main(args: Array[String]){
def valueAtOneQuarter(f:(Double)=>Double)=f(0.25)
//该函数类型为:(Double=>Double)=>Dobule
def function1(x:Double):Double =3*x
println(valueAtOneQuarter(function1))
}
}
输出结果为:0.75
1.2返回函数的函数示例:
object test{
def main(args: Array[String]){
def mulBy(factor:Double)=(x:Double)=>factor*x
val quintuple=mulBy(5)
println(quintuple(3))
}
}
输出结果为:15.0
1.3函数类型推断
前面有定义高阶函数 def valueAtOneQuarter(f: (Double) => Double) = f(0.25),因为已知参数的类型,所以Scala会尽可能推断出类型,在传入参数时,可以省掉一些内容。
valueAtOneQuarter((x:Double)=>3*x)//完整写法
valueAtOneQuarter((x)=>3*x)//已知参数类型,可以省略Double
valueAtOneQuarter(x=>3*x)//只有一个参数时,可以省去()
valueAtOneQuarter(3*_)//参数只在右侧出现一次,可以用_替换