高价函数
函数可以赋值给变量
函数可以作为函数的参数
函数可以作为函数的返回值
#函数可以作为函数的返回值
def methodOne():Unit={
print(“method”)
}
def methodTwo()={
methodOne
}
methodOne()
methodTWo()
##直接返回函数有问题,需要加特殊符号,_
def methodOne():Unit={
print(“method”)
}
def methodTwo()={
methodOne _
}
methodOne()()
#函数的嵌套写法
def methodOne()={
def methodTwo():Unit={
print(“method”)
}
methodTwo _
}
methodOne()()
#带参数的写法
def methodOne(x:Int)={
def methodTwo(y:Int)={
x*y
}
methodTwo _
}
methondOne(2)(3)
#科里化函数
def methodOne(x:Int)(y:Int):Int={
x*y
}
#闭包:一个函数在实现逻辑时,将外部的变量引入到函数的内部,
#改变了这个变量的生命周期,称之为闭包
def methodOne(x:Int)={
def methodTwo(y:Int)={
x*y
}
methodTwo _
}
#将函数作为参数传递给另外一个函数时,需要采用特殊的声明方式:
#()=>unit
#参数类型=>返回值类型
def methodOne(method:()=>Int):Int={
method()+10
}
def method()=5
methodOne(method)
#使用匿名函数作为参数传入
def compute(one:Int,two:Int,method:(Int,Int)=>Int):Int={
method(one,two)
}
compute(100,200,(x,y)=>x+y)
compute(100,200,(x,y)=>xy)
compute(100,200,(x,y)=>xy)