Android Academy · 课时

函数与 Lambda

定义带参数和返回类型的函数,使用默认参数和命名参数,并编写简洁的 Lambda 表达式。

第 2 / 3 课11 个步骤

函数与 Lambda 是 CoddyKit 上的免费 Android Academy 课时。 这是第 2 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Android Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Android Academy 课程共包含 3 节课。

为什么需要函数

函数可以让您只编写一次代码块,然后在任何地方重复使用。

  • 减少重复
  • 让代码更易读、更易测试
  • 将大问题拆分成更小的部分

在 Kotlin 中,函数是一等公民——您可以将它们存储在变量中,也可以将它们传递给其他代码。

基本函数语法

Kotlin 函数使用 fun 关键字:

fun greet(name: String): String {
    return "Hello, $name!"
}

fun main() {
    val msg = greet("Alice")
    println(msg)  // Hello, Alice!

    println(greet("Bob"))  // Hello, Bob!
}

单表达式函数

当函数体只有一个表达式时,您可以使用 =,省略大括号和 return:

fun square(n: Int): Int = n * n

fun add(a: Int, b: Int) = a + b  // type inferred

fun main() {
    println(square(5))   // 25
    println(add(3, 7))   // 10
}

默认参数与命名参数

Kotlin 函数支持默认参数值,因此不需要重载:

  • 默认参数: fun greet(name: String = "World")
  • 命名参数:使用 greet(name = "Alice") 调用,从而跳过位置顺序

默认参数与命名参数的实际用法

默认参数可以让您的 API 保持简洁:

fun buildProfile(
    name: String,
    age: Int = 0,
    role: String = "User"
): String {
    return "$name | age=$age | $role"
}

fun main() {
    println(buildProfile("Alice"))
    println(buildProfile("Bob", age = 30))
    println(buildProfile("Carol", 25, "Admin"))
}

什么是 lambda

lambda 是匿名函数,也就是没有名称的函数。

  • 语法:{ params -> body }
  • 存储在变量中:val double = { x: Int -> x * 2 }
  • 作为参数传递给另一个函数

在 Android 中,lambda 随处可见:点击监听器、列表转换和协程中都会用到。

Lambda 示例

像使用普通函数一样存储并调用 lambda:

fun main() {
    val double = { x: Int -> x * 2 }
    println(double(4))   // 8

    val add = { a: Int, b: Int -> a + b }
    println(add(3, 5))   // 8

    // Lambda with no params
    val sayHi = { println("Hi!") }
    sayHi()              // Hi!
}

高阶函数

高阶函数以另一个函数作为参数,或返回一个函数。

Kotlin 标准库中有许多高阶函数:filter、map、forEach。

尾随 lambda 语法:当最后一个参数是 lambda 时,可以将它移到括号外。

尾随 Lambda 语法

将 lambda 作为最后一个参数传递,并放在括号外:

fun applyTwice(n: Int, operation: (Int) -> Int): Int {
    return operation(operation(n))
}

fun main() {
    val result = applyTwice(3) { x -> x * 2 }
    println(result)  // 12  (3 * 2 = 6, 6 * 2 = 12)

    // 'it' is the implicit single parameter
    val doubled = applyTwice(5) { it + it }
    println(doubled) // 20
}

快速检查

查看这段代码。它会打印什么?

val triple = { x: Int -> x * 3 }
println(triple(4))

回顾:函数与 Lambda

您已经学会了以下内容:

  • fun 用于定义带参数和返回类型的函数
  • 单表达式函数使用 = 简写
  • 默认参数和命名参数可以替代重载
  • Lambda 是匿名函数:{ params -> body }
  • 高阶函数可以接收函数作为参数

下一步:使用条件和循环控制程序流程。

免费开始

用 AI 导师学习 Kotlin — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
36
课程
152

常见问题解答

「函数与 Lambda」课时是免费的吗?

是的 — 「函数与 Lambda」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Android Academy 课程的其余内容,请升级到 CoddyKit PRO。 Android Academy 课程共包含 3 节课。

「函数与 Lambda」这节课中我会学到什么?

定义带参数和返回类型的函数,使用默认参数和命名参数,并编写简洁的 Lambda 表达式。 你通过在浏览器中直接运行的动手代码来练习 Android Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Android Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Android Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 3 节。

「函数与 Lambda」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Android Academy 课中编写并运行代码吗?

能。每节 Android Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 变量与数据类型
  2. 函数与 Lambda
  3. 控制流
← 返回 Android Academy