1)说明
没有名字的函数就是匿名函数。
(x:Int)=>{函数体}
x:表示输入参数类型;Int:表示输入参数类型;函数体:表示具体代码逻辑
2)案例实操
需求 1:传递的函数有一个参数
传递匿名函数至简原则:
(1)参数的类型可以省略,会根据形参进行自动的推导
(2)类型省略之后,发现只有一个参数,则圆括号可以省略;其他情况:没有参数和参
数超过 1 的永远不能省略圆括号。
(3)匿名函数如果只有一行,则大括号也可以省略
(4)如果参数只出现一次,则参数省略且后面参数可以用_代替
1 //匿名函数 :没有名字的函数,通过lambda表达式实现 (参数)=>{函数体} 2 3 //f9((s:String)=>{println(s)}) 4 //(1)参数的类型可以省略,会根据形参进行自动的推导 5 6 //f9((s)=>{println(s)}) 7 //(2)类型省略之后,发现只有一个参数,则圆括号可以省略;其他情况:没有参数和参数超过1的永远不能省略圆括号。 8 9 //f9(s =>{println(s)}) 10 //(3)匿名函数如果只有一行,则大括号也可以省略 11 12 //f9(s =>println(s)) 13 //(4)如果参数只出现一次,则参数省略且后面参数可以用_代替 14 15 //f9(println(_)) 16 // (5) 如果可以推断出,println是一个函数体,而不是调用语句,那么(_)可以省 17 18 // f9(println) 19 //反推导 f9((s:String)=>println(s))
1 def f11(fun:(Int,Int)=>Int):Int={ 2 3 fun(1,2) 4 5 } 6 //println(f11((x:Int,y:Int)=>{x + y})) 7 8 //println(f11((x,y)=>x + y)) 9 10 println(f11(_ + _))