局部函数与高阶函数初步
局部函数
在 Kotlin 中,函数可以嵌套定义,即在一个函数内部定义另一个函数,这种内部定义的函数称为局部函数。局部函数可以访问外部函数的变量和参数,有助于封装逻辑并减少代码重复。
语法示例
fun outerFunction(a: Int) {
fun localFunction(b: Int) { // 局部函数
println("Sum: ${a + b}") // 可以访问外部函数的参数 a
}
localFunction(10) // 调用局部函数
}
fun main() {
outerFunction(5) // 输出:Sum: 15
}
特点
- 作用域限制:局部函数仅在外部函数内可见。
- 减少重复:将重复逻辑封装为局部函数,提升代码可读性。
- 访问外部变量:可直接使用外部函数的参数和局部变量。
高阶函数初步
高阶函数(Higher-Order Function)是指以函数作为参数或返回值的函数。Kotlin 通过 Lambda 表达式和函数类型支持高阶函数,这是函数式编程的核心特性之一。
函数类型
Kotlin 中函数类型表示为:(参数类型) -> 返回值类型。例如:
(Int, Int) -> Int:接收两个Int参数并返回Int的函数。() -> Unit:无参数且无返回值的函数。
高阶函数示例
1. 函数作为参数
fun calculate(x: Int, y: Int, operation: (Int, Int) -> Int): Int {
return operation(x, y)
}
fun main() {
val sum = calculate(5, 3) { a, b -> a + b } // Lambda 表达式
println(sum) // 输出:8
}
2. 函数作为返回值
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("multiply")
println(operation(2, 4)) // 输出:8
}
常见用途
- 回调机制:事件处理或异步操作完成后执行特定逻辑。
- 集合操作:如
map、filter等接收 Lambda 的高阶函数。 - 策略模式:通过传递不同函数实现动态行为。
小结
- 局部函数:嵌套在函数内部,封装局部逻辑,可访问外部变量。
- 高阶函数:以函数为参数或返回值,结合 Lambda 表达式实现灵活的功能组合。
通过掌握局部函数和高阶函数,可以写出更模块化、可复用的 Kotlin 代码,为后续学习函数式编程奠定基础。
