函数可以转换成lambda表达式,更加简洁
1.无参,无返回值函数转换成lambda表达式
fun main() {
test01()
test02()
}
//无参数,无返回值普通函数函数
fun test01(){
println("无参数,无返回值函数")
}
//无参数,无返回值普通函数函数的lambda表达式
val test02 = { println("无参数,无返回值函数")}
无参数,无返回值函数
无参数,无返回值函数
2.有参数,有返回值函数转换成lambda表达式
fun main() {
println(test03(1, 2))
println(test04(1, 2))
println(test05(1, 2))
}
//有参数,有返回值普通函数函数
fun test03(a: Int, b: Int): Int {
return a + b
}
//lambda表达式写法1(需要编写返回值类型)
val test04:(Int,Int)->Int = {a,b->a+b}
////lambda表达式写法2(不需要编写返回值类型)
val test05 = {a:Int,b:Int->
a+b
}
3
3
3
3.lambda表达式作为函数的参数
lambda表达式作为函数的参数这个稍微有点难理解,我们可以这样理解:
1.参数声明了函数名称,入参,返回值。
2.调用的时候,传入函数体。这样就形成了一个完整的函数。
fun main() {
println(test06(2,{x,y->x+y}))
}
//参数分别为a和test06 lambda表达式
//lambda表达式作为函数的参数 大概可以理解为:
// 参数是声明的函数名称,入参,返回值,调用的时候,传入函数体。这样就形成了一个完整的函数
//
fun test06(a:Int,b : (num1 : Int , num2 : Int) -> Int):Int{
return a+b(a,a)
}
6
4.it的使用
当我们的lambda表达式中只有一个参数的时候,我们可以使用it来代替这个参数
fun main() {
println(test07(2))
}
val test07:(Int)->Int = {it }
5.下划线(_)
下划线表示我们不处理某个参数。我们通过map的遍历来举例子
fun main() {
map.forEach{
key,value->
println(key+"-"+value)
}
map.forEach {
_,value->
println(value)
}
}
val map =
mapOf("key01" to "value01", "key02" to "value02", "key03" to "value03", "key04" to "value04")
key01-value01
key02-value02
key03-value03
key04-value04
value01
value02
value03
value04
在第一个遍历中,我们把key和value都遍历打印出来,而在第二个遍历中,我们把key用下划线表示,表示不遍历key。
6.匿名函数
表示没有函数名称的函数,
fun (x : Int , y : Int) : Int {
return x + y
}
网友评论