[2023] Kotlin チュートリアル
記事ディレクトリ
パート II オブジェクト指向プログラミングと関数型プログラミング
第 13 章 関数型プログラミングの基礎 — 高階関数とラムダ式
関数型プログラミングの考え方はオブジェクト指向と同じくらい古いものですが、関数型プログラミングをサポートするコンピューター言語が登場したのはごく最近のことです。これらの言語には、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
難しいことは何もなく、他の使い方と同じです。