Scala中的高阶函数,主要包含三种:
- 函数的参数是函数。
- 函数的返回值是函数。
- 函数的参数和返回值都是函数。
下面通过三种不同的函数形式,来实现阶乘。
1、函数的参数是函数 已知函数1实现阶乘计算,在函数2中使用函数1
def fun1(i: Int): Int = {
if (i == 1)
i
else
i * fun1(i - 1)
}
def fun2(f: (Int) => Int, i: Int) = {
val result = f(i)
println(result)
}
fun2(fun1, 5);
2、函数的返回值是函数 已知函数1实现阶乘计算,在函数2中使用函数1,并作为结果返回
def fun1(i: Int): Int = {
if (i == 1)
i
else
i * fun1(i - 1)
}
def fun2(): (Int) => Int = {
//参数在调用fun2时传递给fun1
fun1
}
println(fun2()(5))
3、函数的参数和返回值都是函数 已知函数1打印测试信息,函数2实现计算,函数3调用函数1,2
def fun1(): Unit = {
println("this is high function od the scala")
}
def fun2(i: Int): Int = {
if (i == 1)
i
else
i * fun2(i - 1)
}
def fun3(f: () => Unit): (Int) => Int = {
//调用函数f需要写上(),执行fun1()
f()
fun2
}
println(fun3(fun1)(5))