先用人话理解
Lambda 是可以放进变量、传给函数的代码片段。高阶函数则是接收函数,或返回函数的函数。它们让筛选、排序、转换列表更简洁。
本课要点:Lambda 写在花括号里;只有一个参数时常用 it。filter 负责筛选,map 负责逐项转换。
代码例子
先读注释,再关注每一行如何把数据变成结果。
KOTLIN · 可独立运行
fun calculate(price: Int, action: (Int) -> Int): Int = action(price) // 接收一个操作并把价格交给它处理
fun main() {
val prices = listOf(12, 35, 8, 49) // 一组商品价格
val affordable = prices.filter { price -> price < 30 } // 只保留小于 30 的价格
val doubled = affordable.map { it * 2 } // 把筛选结果乘以 2
println(doubled) // [24, 16]
val result = calculate(20) { it + 5 } // Lambda:价格加 5
println(result) // 25
}再看一个用法
KOTLIN · 可独立运行
fun main() {
val names = listOf("小米", "苹果", "梨")
val longNames = names.filter { it.length >= 2 } // 尝试改为只保留长度大于 2 的名称
println(longNames)
}动手改一改
val names = listOf("小米", "苹果", "梨") val longNames = names.filter { it.length >= 2 } // 改成筛选长度至少为 2 的名称 println(longNames)
去 Kotlin Playground 动手 ↗提示:Android 专属示例需要 Android Studio 项目和对应依赖;普通 Kotlin 示例可在 Playground 中尝试。
三道小测
先自己选择,再展开答案。答错也没关系,重要的是知道为什么。
1. filter 的作用是什么?
查看答案与解析
正确答案:B。抓住题目中的核心概念,重新对照示例理解。
2. 只有一个参数的 Lambda 可以用什么简写?
查看答案与解析
正确答案:A。回到概念和代码示例,再解释一次为什么。
3. 高阶函数的特征是什么?
查看答案与解析
正确答案:B。抓住题目中的核心概念,重新对照示例理解。
深入阅读
想继续往下挖,可以阅读 Kotlin / Android 官方文档。
打开官方文档 ↗标记学习进度
进度保存在当前浏览器的 localStorage 中。