函数定义与调用
函数是 Kotlin 编程中的基本构建块之一,用于封装可重用的代码逻辑。本章将详细介绍如何定义和调用函数,并展示 Kotlin 函数的灵活特性。
1. 基本函数定义
Kotlin 使用 fun 关键字声明函数,语法如下:
fun functionName(parameters): ReturnType {
// 函数体
return result
}
示例:简单加法函数
fun add(a: Int, b: Int): Int {
return a + b
}
2. 函数调用
调用函数时直接使用函数名和参数:
val sum = add(3, 5) // 返回 8
3. 表达式函数体
当函数只有单个表达式时,可以使用简写形式:
fun multiply(x: Int, y: Int) = x * y
4. Unit 返回类型
当函数不返回任何有意义的值时,返回类型为 Unit(可省略):
fun printMessage(msg: String): Unit {
println(msg)
}
// 等价于
fun printMessage(msg: String) {
println(msg)
}
5. 函数作用域
Kotlin 函数可以定义在:
- 顶层(不属于任何类)
- 类成员
- 局部(在其他函数内部)
示例:不同作用域的函数
// 顶层函数
fun topLevelFunction() = println("Top-level")
class MyClass {
// 成员函数
fun memberFunction() = println("Member")
fun test() {
// 局部函数
fun localFunction() = println("Local")
localFunction()
}
}
6. 函数调用方式
Kotlin 支持两种调用方式:
- 传统位置参数调用
- 具名参数调用(可提高可读性)
fun createUser(name: String, age: Int, email: String) { ... }
// 传统调用
createUser("Alice", 30, "alice@example.com")
// 具名参数调用
createUser(
name = "Bob",
email = "bob@example.com",
age = 25
)
7. 可变参数
使用 vararg 关键字定义可变数量参数:
fun printAll(vararg messages: String) {
for (m in messages) println(m)
}
printAll("Hello", "Kotlin", "World")
最佳实践
- 保持函数短小专注(单一职责原则)
- 使用有意义的函数名和参数名
- 考虑使用表达式函数体简化简单函数
- 合理使用具名参数提高调用可读性
常见问题
Q: Kotlin 函数可以有默认参数吗? A: 是的,下一节将详细介绍默认参数功能。
Q: 如何从 Java 调用 Kotlin 函数? A: Kotlin 函数会被编译为 JVM 字节码,Java 可以直接调用。顶层函数会被编译为包含类的静态方法。
