首页 > 其他 > 详细

Scala学习笔记-09-函数式编程-匿名函数

时间:2020-02-14 13:57:45      阅读:58      评论:0      收藏:0      [点我收藏+]

方法定义:

def 方法名(参数名:参数类型):返回结果类型 = {方法体}

 

## 非匿名函数的定义和使用
# 函数名为add,入参为Int类型的x,函数返回值 Int,函数体为 x+1
scala> def add(x:Int):Int = {x + 1} add: (x: Int)Int scala> add(3) res17: Int = 4 ## 匿名函数的定义和使用
# 匿名函数(x)=>x+1 【也成为函数字面量】赋值给 add 变量,add的类型是 Int=>Int
# 如果匿名函数的入参只有1个,则可省略(),写成 x=>x+1
# 1个参数 scala> val add:Int=>Int = {(x)=>x+1} add: Int => Int = <function1> scala> add(3) res18: Int = 4

# 2个入参
scala> val add:(Int,Int)=>Int = {(x,y)=>x+y+10}
add: (Int, Int) => Int = <function2>

scala> add(5,3)
res14: Int = 18

# 0个入参
scala> val javaHome:()=>String = {()=>System.getProperty("java.home")}
javaHome: () => String = <function0>

scala> println(javaHome) #打印方法名
<function0>

scala> println(javaHome())
/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre #打印方法调用后的值


## 使用类型推断系统,可以省略函数类型
# 根据匿名函数中参数的类型,自动推断出匿名函数返回值的类型 scala> val add = {(x:Int)=>x+1}
add: Int => Int = <function1>

scala> add(3)
res19: Int = 4

 

占位符语法:

当函数的每个参数在函数字面量内仅出现一次,可以省略=>并使用下划线"_"作为参数占位符,第一个下划线代表第一个参数,第二个下划线代表第二个参数...

scala> val add = (_:Int)+1 //类型不能省略,否则无法使用类型推断
add: Int => Int = <function1>
scala> add(3)
res20: Int = 4

scala> val add = (_:Int) + (_:Int) //类型不能省略,否则不能使用类型推断
add: (Int, Int) => Int = <function2>

scala> add(3,4)
res21: Int = 7

 

Scala学习笔记-09-函数式编程-匿名函数

原文:https://www.cnblogs.com/wooluwalker/p/12306979.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!