Scala 匿名函数

Posted 趣说大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala 匿名函数相关的知识,希望对你有一定的参考价值。


01

函数声明及转换


  • 匿名函数定义

(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))


02

函数定义


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}) //传入一个匿名函数


03

匿名函数省略原则


  • 函数定义的时候声明了变量类型,变量类型可以省略。

fun2((a,b)=>{a+b})
  • 类型省略之后,如果只有一个参数()可以省略。

  • 函数体只有一行则{}可以省略。

fun2((a,b)=>a+b)
  • 变量在函数体内只使用一次则变量可用_代替。

fun2(_+_) // a和b在后面的函数体中只使用一次,则变量名则省略


04

模拟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 匿名函数的主要内容,如果未能解决你的问题,请参考以下文章

Scala中方法内的匿名函数

非你所想Scala@我不是你想的那样的匿名函数

非你所想Scala@我不是你想的那样的匿名函数

每天学一点Scala之 匿名函数

linux打开终端如何启动scala,如何在终端下运行Scala代码片段?

scala闭包/匿名函数中的多个返回点