黑猴子的家:Scala 高阶函数

能够接受函数作为参数的函数,叫做高阶函数。

1、高阶函数的使用一

def highOrderFunction1(f: Double => Double) = f(10)
def minus7(x: Double) = x - 7
val result2 = highOrderFunction1(minus7)
println(result2)

2、高阶函数的使用二

def highFunction(x:Int,y:Int,f:(Int,Int)=>Double) = f(x,y)
def subF(a:Int,b:Int):Double={
  a*b
}
println(highFunction(2,3,subF))

3、函数(名)参数解析

//f: => Double 表示 这个f函数不接受任何参数,并返回一个Double类型的值
//f: Int => Double 表示 这个f函数接受一个Int类型的参数,并返回一个Double类型的值
//f: (Int,String) => Double 表示 这个f函数接受两个参数,一个Int类型的参数,一个String类型的参数,并返回一个Double类型的值

4、柯里化 + 闭包 + 返回函数类型

高阶函数同样可以返回函数类型

函数柯里化,高阶函数可以返回函数类型 ,函数同样可以作为返回类型,这叫做函数的柯里化,一个函数本来能够接收两个参数的,把它切分一下,变成两个函数,每个函数接收一个参数,这就是柯里化,柯里化(Haskell Curry)不是为了设计scala 而产生的一个概念,而是在设计scala 函数式编程中必然的产物,函数是一个对象,可以当做另一个函数的返回值

闭包
闭包就是,里面的函数使用外面函数的参数,叫做闭包

def m1(x:Int) = (y:Int) => x-y
println(m1(10))
println(m1(10)(3))
val function1 = m1(10)
val i6 = function1(3)
println("i6-------       "+i6)

转载于:https://www.jianshu.com/p/ef75d8359e9e

猜你喜欢

转载自blog.csdn.net/weixin_33910460/article/details/91182467