Scala语言之匿名函数以及简化写法来改善代码

代码一:
def  f1(f : ()=>Unit) : Unit = {
     f()
}
f1(()=>{println("hello scala")})
输出结果为:  hello scala


代码二:
当匿名函数中有参数时:
def f1(f : (Int)=>Int) : Int = {
   f(10)
}
println(f1((x: Int) =>{x+10}))
输出结果为: 20

简化写法:
1.在匿名函数中,如果函数体只有一行代码. 那么就可以把花括号给省略.
(x : Int) => x+10

2.在匿名函数中,可以省略类型
(x) => x+10

3.在匿名函数中. 如果变量在函数体中只用过一次就可以把变量替换成_(下划线). 同时把=>给省略掉, 也把=>前面的类型给省略掉…
(x) => x+10 改写成 _+10

4.在匿名函数中, 如果有两个变量, 这两个变量各同时用过一次, 此时两个变量都替换成_(下划线). 同时把=>给省略掉.也把=>前面的类型给省略掉.
(x,y) => x+y 改写成 +

比如:

(i : Int) => {println(i)} 改写成  (i) => {println(i)}
(i) => {println(i)} 改写成  (i) => println(i)
(i) => println(i)   改写成  println(_)
println(_)   改写成  println          
注意:  
如果println(_)只有一个参数就可以省略成println.  如果在println语句里有两个变量,那么这两个变量是不能替换成_(下划线)

def f7(f : (Int, Int) => Unit) = {
     f(1,2)
}
f7(println(_+_))是不能替换成_(下划线).会报错. 在println里只有一个变量可以省略成_(下划线), 如果在println里面有多个变量不可以省略成_(下划线), 多个变量在println里只能写变量名. 



(x:Int, y:Int) => {x+y}  改写成  (x,y) => {x+y}
(x,y) => {x+y}   改写成  (x,y) => x+y
(x,y) => x+y  改写成  _+_    
比如:  
def f1(f : (Int, Int) => Int) : Int = {
   f(10,10)
}
// 第一种  
println(f1((x: Int, y: Int) => {x+y}))
// 第二钟
println(f1((x, y) => {x+y}))
//第三种
println(f1((x, y) => x+y))
//第四种
println(f1(_+_))    


切记:  println(_+_)是不行的,会报错.  只能println(_).println(_)基础上在可以改写成println,前提println(_)里面只有一个变量.
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值