Scala 匿名函数
Posted 趣说大数据
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala 匿名函数相关的知识,希望对你有一定的参考价值。
函数声明及转换
匿名函数定义
(a:Int,b:Int)=>{a+b}
将该函数赋值给变量
val add=(a,b)=>{a+b}
补全返回值
val add:(Int,Int)=>Int=(a,b)=>{a+b}
函数定义
val 变量名:函数入参类型=>函数返回值类型=函数变量列表=>函数体
函数调用
println(add(1, 2))
函数定义
def fun2(fun:(Int,Int)=>Int):Int={
fun(1,2)
}
函数调用方式
def add1(a:Int,b:Int)={a+b}
val add=(a:Int,b:Int)=>{a+b}
fun2(add) //传入一个函数
fun2(add1 _) //传入一个普通函数 后接一个空格加_ 传入的是函数的引用 不是调用这个函数
fun2((a:Int,b:Int)=>{a+b}) //传入一个匿名函数
匿名函数省略原则
函数定义的时候声明了变量类型,变量类型可以省略。
fun2((a,b)=>{a+b})
类型省略之后,如果只有一个参数()可以省略。
函数体只有一行则{}可以省略。
fun2((a,b)=>a+b)
变量在函数体内只使用一次则变量可用_代替。
fun2(_+_) // a和b在后面的函数体中只使用一次,则变量名则省略
模拟Map函数
def mapDemo(array:Array[Int],op:Int=>Int):Array[Int]={
for(elem<-array ) yield op(elem)
}
val array = Array[Int](1,3,5,6,7,8)
mapDemo(array, a => a * 2)
mapDemo(array,_*2)
//op:Int=>Int 定义一个匿名函数 接收一个Int参数返回一个Int参数
以上是关于Scala 匿名函数的主要内容,如果未能解决你的问题,请参考以下文章