1、高阶函数的定义:一个函数的返回值或者参数是一个函数,这样的函数就称作高阶函数
object Fraction {
def main(args: Array[String]): Unit = {
val f = add _;//这里的f是一个函数,将函数赋值给一个变量
//这里的f是一个函数类型的变量
//这里的下划线表示取出函数本身
val result = f(1,3);
println(result);
}
def add(a:Int,b:Int) = a+b;
}
2、以数据为主体,传递函数,批量处理每一个元素
def multi(n:Int) = {n * 3}
val f = multi _;
//通过map将函数变量f传递 将数组的每一个元素都乘以3
val arr = Array(1,2,3).map(f);
for(i<-arr){println(i)}
3、匿名函数:没有函数名
val f = (n:Int) => n * 3;
val arr = Array(1,2,3).map(f);
for(i <- arr ) println(i);
另外一种简单的写法是在map直接写一个匿名函数
,不用再通过函数变量传递
val arr = Array(12,3,4).map((n:Int)=>n*3);//直接再map里面定义一个匿名函数
for(i<-arr)println(i);
4、高阶函数的举例
object Fraction {
def main(args: Array[String]): Unit = {
println( fun(1,2,f1,f2));
}
//函数的参数是函数
def fun(a:Int,b:Int,f1:(Int,Int)=>Int,f2:(Int,Int)=>Int)={
if(a > 0 || a == 0) f1;
if(a < 0) f2;
}
def f1(a:Int,b:Int):Int = a + b;
def f2(a:Int,b:Int):Int = a - b;
}
5、