函數可以轉換成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
}