Kotlin学习笔记(八)lambda表达式

函数可以转换成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
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章