
许多现代高级编程语言其实在很早之前就开始支持 Lambda 编程了,但是 Java 却直到 JDK 1.8 之后才加入了 Lambda 编程的语法支持。值得庆幸的是,Kotlin 从第一个版本开始就支持了 Lambda 编程。 Lambda 的出现确实是减少了代码量的编写,同时也使代码变得更简洁明了。
Lambda 语法
{参数名1:参数类型,参数名2:参数类型 -> 函数体}
需求1:如何在一个水果集合中找到单词最长的那个水果?
fun main() {
val list = listOf("apple","orange","pear","watermelon","grape")
val maxLen = list.maxByOrNull { it.length }
println("max length fruit is ${maxLen}")
}
需求2:如何在一个水果集合中水果名都变成大写?
fun main() {
val list = listOf("apple","orange","pear","watermelon","grape")
val newList = list.map { it.toUpperCase() }
for (fruit in newList){
println("$fruit")
}
}
需求3:数组经过索引和元素相乘后得到新的数组
fun main() {
val args = arrayOf(1,3,5,7)
// 调用方式:括号内
transform(args,action = {index, element ->
index * element
})
//调用方式:括号外
transform(args){index, element ->
index * element
}
}
/*
* 要求返回变换后的元素,会替换掉老的元素
*
* */
fun transform(array: Array<Int>,action:(index: Int,element: Int)->Int){
for (index in array.indices) {
val newArray = action(index, array[index])
array[index] = newArray
}
}
Lambda 实践
如何使用 it
- it 并不是 Kotlin 中的关键字,也不是保留字;
- it 是在当一个高阶方法中 Lambda 表达式的参数只有一个的时候可以使用 it 来使用该参数;
- it 可表示为单个参数的隐式名称,是 Kotlin 语言约定的
实例:使用隐形参数 it
fun main() {
val list = listOf("apple","orange","pear","watermelon","grape")
list.forEach {
println(it)
}
}
网友评论