跳转到内容

Kotlin函数基础

来自代码酷

模板:Note

Kotlin函数基础[编辑 | 编辑源代码]

函数是Kotlin编程的核心构建块,用于封装可重用的代码逻辑。与Java不同,Kotlin函数具有更简洁的语法和更强大的特性。

函数定义语法[编辑 | 编辑源代码]

Kotlin使用fun关键字定义函数,基本结构如下:

fun functionName(parameters: ParameterType): ReturnType {
    // 函数体
    return result
}

简单示例[编辑 | 编辑源代码]

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

fun main() {
    println(greet("Alice"))  // 输出: Hello, Alice!
}

函数组成部分[编辑 | 编辑源代码]

1. 参数[编辑 | 编辑源代码]

Kotlin支持:

  • 默认参数
  • 命名参数
  • 可变数量参数(vararg)
fun printDetails(name: String, age: Int = 25, vararg hobbies: String) {
    println("Name: $name")
    println("Age: $age")
    println("Hobbies: ${hobbies.joinToString()}")
}

// 使用示例
printDetails("Bob", hobbies = "Reading", "Swimming")

2. 返回值[编辑 | 编辑源代码]

  • 显式使用return
  • 单表达式函数可省略大括号
  • 返回Unit类型时可省略返回类型
// 单表达式函数
fun square(x: Int) = x * x

// Unit返回类型
fun log(message: String): Unit {
    println("[LOG] $message")
}

函数类型[编辑 | 编辑源代码]

Kotlin函数分为两类:

类型 特点 示例
成员函数 定义在类或对象内部 class User { fun login() }
顶层函数 直接定义在文件中 fun processData()

实际应用案例[编辑 | 编辑源代码]

用户验证系统[编辑 | 编辑源代码]

fun validateUser(
    username: String,
    password: String,
    minLength: Int = 8
): Boolean {
    if (username.isBlank()) return false
    if (password.length < minLength) return false
    if (!password.any { it.isDigit() }) return false
    return true
}

fun main() {
    val isValid = validateUser("user123", "pass1234")
    println("Validation result: $isValid")  // 输出: true
}

数学计算器[编辑 | 编辑源代码]

fun calculate(
    a: Double,
    b: Double,
    operation: (Double, Double) -> Double
): Double {
    return operation(a, b)
}

fun main() {
    val result = calculate(5.0, 3.0) { x, y -> x * y }
    println("Result: $result")  // 输出: 15.0
}

高级特性[编辑 | 编辑源代码]

中缀表示法[编辑 | 编辑源代码]

适用于只有一个参数的成员函数或扩展函数:

infix fun Int.times(str: String) = str.repeat(this)

fun main() {
    println(2 times "Bye ")  // 输出: Bye Bye 
}

尾递归函数[编辑 | 编辑源代码]

使用tailrec优化递归:

tailrec fun factorial(n: Int, acc: Int = 1): Int {
    return if (n <= 1) acc else factorial(n - 1, n * acc)
}

fun main() {
    println(factorial(5))  // 输出: 120
}

函数执行流程[编辑 | 编辑源代码]

graph TD A[调用函数] --> B[参数传递] B --> C[执行函数体] C --> D{有返回值?} D -->|是| E[返回结果] D -->|否| F[执行完毕]

性能考虑[编辑 | 编辑源代码]

  • 内联函数(inline)可减少高阶函数的运行时开销
  • 避免在热路径中创建过多临时函数对象
  • 尾递归函数会被编译为循环,不会导致栈溢出

最佳实践[编辑 | 编辑源代码]

  1. 保持函数单一职责(一个函数只做一件事)
  2. 限制参数数量(通常不超过5个)
  3. 使用有意义的函数名(动词开头)
  4. 复杂逻辑分解为多个小函数
  5. 优先使用表达式函数体

页面模块:Message box/ambox.css没有内容。

练习建议[编辑 | 编辑源代码]

尝试实现以下函数:

  • 计算斐波那契数列
  • 字符串反转函数
  • 温度转换函数(Celsius ↔ Fahrenheit)
  • 简单的HTTP请求处理函数

通过掌握Kotlin函数基础,您已经为学习更高级的函数式编程概念打下了坚实基础。