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