高阶函数
object test {
def main(args: Array[String]): Unit = {
function1((x:Int)=>x+"test")
}
def function1(x:Int=>String): Unit ={ //该函数的参数是一个函数(输入参数是int,返回值时string)
print(x(11)) //给该函数的参数里的函数的参数赋值为11
}
def f2(x:Int):(Int,Int)=>Int={ //调用该函数返回函数(该返回函数是输入int,返回Int类型的)
def f3(y:Int,z:Int):Int={ //定义该返回函数
x+y+z
}
f3 //return 该返回函数
}
def f4(x:Int):(Int,Int)=>Int={ //这是上一个函数的简写
(y:Int,z:Int)=>x+y+z //别名函数不需要调用直接返回
}
}
scala 的闭包:函数里面引用外面类成员变量叫作闭包.例:
var a=3 val b=(i:Int)=>i*a
柯里化
def f4(x:Int):(Int,Int)=>Int={ //这是f2函数的简写
(y:Int,z:Int)=>x+y+z //别名函数不需要调用直接返回
}
def curring(x:Int)(y:Int,z:Int):Int=x+y+z //再将f4柯里化
map里的参数是函数
object test{
def main(args: Array[String]): Unit = {
val nums=Seq(2,3,4)
val newnums=nums.map(_*2) //Lists(4,6,8) _*2 是函数 x=>x*2的缩写
println(newnums)
}
}