您的位置:首页 > 其它

scala基本语法->高阶函数、闭包、​柯里化

2018-01-06 11:05 309 查看
高阶函数

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)
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: