/**
* Created by root
* Description : 柯里化函数,偏应用函数,匿名函数,高阶函数
*/
object FunctionTest {
def main(args: Array[String]): Unit = {
//柯里化函数
def add(x:Int)(y:Int):Int= x + y //等价 def add(x:Int,y:Int):Int = x + y
println(add(1)(2))
//偏应用函数,每次固定与100相加
val add1 = add(100)_;
println(add1(10))
println(add1(20))
// 求a到b之间的累加和
var s =0;
def sum(a:Int, b:Int):Int={
for (i <- a to b){
s += i;
}
s
}
println(sum(1,5))
// 偏应用函数,每次从开始位置10累加
val sumStartIndex = sum(10,_:Int)
println(sumStartIndex(100))
// 匿名函数
var mul = (x:Int,y:Int) => x * y
println(mul(2,3))
def add3(x:Int,y:Int):Int= x + y
// 高阶函数,接收一个函数类型
def foo(f:(Int,Int)=>Int,x:Int,y:Int)={
f(x,y)
}
println(foo(add3,1,5))
}
}