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))