[2023] Kotlin チュートリアル
記事ディレクトリ
パート II オブジェクト指向プログラミングと関数型プログラミング
第 13 章 関数型プログラミングの基礎 — 高階関数とラムダ式
関数型プログラミングの考え方はオブジェクト指向と同じくらい古いものですが、関数型プログラミングをサポートするコンピューター言語が登場したのはごく最近のことです。これらの言語には、Swift、Python、Java 8、および C++ 11 が含まれます。新しい言語として、Kotlin は関数型プログラミングもサポートします。
13.3 ラムダ式
ラムダ式は、式、関数パラメータ、および関数の戻り値として使用できる匿名関数です. ラムダ式の演算結果は関数です.
13.3.4 ラムダ式と return ステートメント
return ステートメントは Lambda 式の本体でも使用できます。これにより、プログラムが Lambda 式の本体から飛び出します。サンプルコードは次のとおりです。
// 累加求和函数
fun sum(vararg num: Int): Int {
var total = 0
num.forEach {
// if (it == 10) return -1 // 返回最近的函数
if (it == 10) return@forEach // 返回Lambda表达式函数
total += it
}
return total
}
fun main() {
val n = sum(1, 2, 10, 3)
println(n) // 6
val add = label@{
val a = 1
val b = 2
return@label 10
a + b
}
// 调用Lambda表达式add
println(add()) // 10
}
In this code, forEach
the function is followed by a Lambda expression. 使用するとif (it == 10) return -1
、Lambda 式 forEach の代わりに最も近い合計関数が返されます。
In order to return the Lambda expression, you need to add a label after the return statement. @forEach は暗黙の宣言ラベルであり、ラベル名は Lambda 式が配置されている関数 (forEach) の名前です。
Lambda 式の明示的なタグを宣言することも可能です。
[ヒント] forEach は、セット、配列、または範囲の関数であり、その後に Lambda 式が続きます. セット、配列、または範囲オブジェクトが forEach 関数を呼び出すと、セット、配列、または範囲オブジェクトの各要素が渡されますLambda 式に追加して実行します。