【2023】Kotlin教程
第二篇 面向对象与函数式编程
第13章 函数式编程基石——高阶函数和Lambda表达式
函数式编程思想虽然与面向对象一样立即悠久,但是支持函数式编程的计算机语言不过是近几年的事情。这些语言有Swift、Python、Java 8和C++ 11等,作为新生的语言Kotlin也支持函数式编程。
13.2 高阶函数
函数式编程的关键是高阶函数的支持。一个函数可以作为另一个函数的参数,或者返回值,那么这个函数就是“高阶函数”。
13.2.4 函数作为参数使用
高阶函数还可以接收另一个函数作为参数使用。下面来看一个函数作为参数使用的示例:
// 定义计算长方形面积的函数
// 函数类型(Double, Double) → Double
fun rectangleArea(width: Double, height: Double): Double {
return width * height;
}
// 定义计算三角形面积的函数
// 函数类型(Double, Double) → Double
fun triangleArea(bottom: Double, height: Double) = 0.5 * bottom * height
// 高阶函数, funName参数是函数类型
fun getAreaByFunc(funcName: (Double, Double) -> Double, a: Double, b: Double): Double {
return funcName(a, b)
}
fun main() {
// 获得计算三角形的面积函数
var result = getAreaByFunc(::triangleArea, 10.0, 15.0)
println("底10 高15的三角形面积为: $result")
// 获得计算长方形的面积函数
result = getAreaByFunc(::rectangleArea, 10.0, 15.0)
println("宽10 高15的长方形面积为: $result")
}
不管用什么方法,都是对函数类型的使用,(Double, Double) → Double
,没啥难的,与其他类型的用法一样。