【Kotlin】学习笔记(三)Lambda表达式

1.Lambda变量

1
2
3
4
5
6
7
val sum = {a: Int, b: Int -> 
a + b
}

fun main() {
println(sum(1, 3))
}

2.Lambda表达式作为参数(匿名函数)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
fun transform(arr: Array<Int>, action: (index: Int, ele: Int) -> Int) {
//遍历下标集
for (index in arr.indices) {
val newValue = action(index, arr[index])
arr[index] = newValue
}
}

fun main() {
val numbers = arrayOf(1,2,3,4)
//传入Lambda: 将数组的每个元素与其下标相乘
//效果与 numbers.mapIndexed{index, value -> index * value} 相当
transform(numbers, {index, ele ->
index * ele
})

for (n in numbers) {
println(n)
}

}

3.进阶语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
fun fun1(action: (a: Int) -> Int){
println(action(3))
}

fun main(){
// 原表达式
fun1({value:Int -> value * value})

// 1.由于可以自动推导类型,故省略类型声明
fun1({value -> value * value})

// 2.当lambda表达式是函数中最后一个参数时,可以将其放在函数后面
fun1(){value -> value * value}

// 3.当函数括号内没有参数时,可以省略括号
fun1{value -> value * value}

// 4.当lambda表达式参数只有一个时,可以省略,改用it指代
fun1{it * it}
}


【Kotlin】学习笔记(三)Lambda表达式
https://chordfish-k.github.io/2023/02/03/kotlin/kotlin-20230203/
作者
超弦鱼
发布于
2023年2月3日
许可协议