Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 高阶函数(以函数作为参数或返回值的函数)

高阶函数(以函数作为参数或返回值的函数)

1. 高阶函数的概念

高阶函数(Higher-Order Function)是指可以接受函数作为参数或返回函数的函数。Kotlin 作为一门支持函数式编程的语言,高阶函数是其核心特性之一。

特点:

  • 函数是一等公民:函数可以像普通变量一样传递和返回
  • 提升代码复用性:通过将行为参数化,减少重复代码
  • 更简洁的表达:配合Lambda表达式,使代码更简洁

2. 函数作为参数

基本语法

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

示例

fun main() {
    val sum = { x: Int, y: Int -> x + y }
    val result = calculate(5, 3, sum)  // 输出8
    
    // 直接传递Lambda表达式
    calculate(5, 3, { a, b -> a * b })  // 输出15
}

3. 函数作为返回值

基本语法

fun getOperation(type: String): (Int, Int) -> Int {
    return when(type) {
        "add" -> { a, b -> a + b }
        "multiply" -> { a, b -> a * b }
        else -> { _, _ -> 0 }
    }
}

示例

fun main() {
    val operation = getOperation("add")
    println(operation(2, 3))  // 输出5
}

4. 常见使用场景

回调机制

fun fetchData(callback: (String) -> Unit) {
    // 模拟网络请求
    Thread.sleep(1000)
    callback("Data loaded")
}

策略模式

fun sort(list: List<Int>, comparator: (Int, Int) -> Boolean): List<Int> {
    // 实现排序逻辑
}

5. 与Lambda表达式的结合

Kotlin提供了简洁的语法糖来简化高阶函数调用:

// 当Lambda是最后一个参数时,可以移到括号外
calculate(5, 3) { a, b -> a - b }

// 当Lambda是唯一参数时,可以省略括号
list.forEach { println(it) }

6. 性能考虑

虽然高阶函数提供了强大的表达能力,但需要注意:

  • 每个Lambda表达式都会生成一个匿名类实例
  • 可以使用inline关键字优化性能(详见内联函数章节)

7. 实际案例

自定义高阶函数

fun <T> List<T>.customFilter(predicate: (T) -> Boolean): List<T> {
    val result = mutableListOf<T>()
    for (item in this) {
        if (predicate(item)) {
            result.add(item)
        }
    }
    return result
}

// 使用
val numbers = listOf(1, 2, 3, 4, 5)
val evens = numbers.customFilter { it % 2 == 0 }

总结

高阶函数是Kotlin函数式编程的核心,通过将函数作为参数或返回值,可以极大地提高代码的灵活性和可重用性。结合Kotlin的Lambda表达式语法糖,可以写出既强大又简洁的代码。

提示:在Android开发中,高阶函数常用于事件处理、异步回调等场景;在后端开发中,常用于中间件、过滤器等实现。

Last Updated:: 5/21/25, 7:58 PM