天天看点

高阶函数与柯里化函数

1.高阶函数

  • 函数的参数是函数
  • 函数的返回是函数
  • 函数的参数和函数的返回是函数
//函数的参数是函数
def test3(n:Int,fun1:(Int)=>Int):Unit={
  var i = 1
  while (i<=n){
    println(i+"的阶乘:"+fun1(i))
    i += 1
  }
}
//递归函数
  def test(n:Int):Int={
    //定义递归的边界
    if(n==1)
      1
    else
      n*test(n-1)
  }
test3(10,test)//不在此处调用test函数,所有不能加()
//函数的返回是函数
def test4(a:Int,b:Int):(Int,Int)=>Int={
    def fun2(c:Int,d:Int):Int={
      a+b+c+d
    }
    fun2//返回函数,并不是调用,所以不能加小括号()
  }
println(test4(10,20)(30,40))
//函数的参数是函数,函数的返回是函数
def hightFun3(f : (Int ,Int) => Int) : (Int,Int) => Int = {
f
}      

2.柯里化函数

//柯里化函数
  //本质上柯里化函数就是高阶函数的简化版
  //计算4个字符的和
  def test5(a:Int,b:Int)(c:Int,d:Int):Int={
    a+b+c+d
  }
println(test5(10,20)(30,40))      

继续阅读