Lambdaとは?構文と型
ラムダ式の構文、パラメータの型、戻り値について理解します。
「Lambdaとは?構文と型」はCoddyKit上の無料Kotlin Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKotlin Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kotlin Academyコースには全4レッスンが含まれています。
ラムダを一言で説明すると
ラムダは無名関数、つまり変数に格納したり、別の関数に渡したり、返したりできる関数値です。
ラムダの基本構文
ラムダは中かっこで記述し、->の左側にパラメーター、右側に本体を置きます。
fun main() {
val greet = { name: String -> "Hello, $name!" }
println(greet("World"))
}パラメーターのないラムダ
パラメーターがない場合は、パラメーター自体を省略できます。最後の式が戻り値になります。
fun main() {
val random = { (1..6).random() }
println(random()) // some number 1..6
}複数パラメーターのラムダ
パラメーターはカンマで区切ります。型を指定することも、コンテキストからの推論に任せることもできます。
fun main() {
val sum = { a: Int, b: Int -> a + b }
println(sum(3, 4)) // 7
}ラムダの型推論
ラムダを型付き変数に代入する場合、パラメーターの型を省略できます。
fun main() {
val multiply: (Int, Int) -> Int = { a, b -> a * b }
println(multiply(6, 7)) // 42
}ラムダの型アノテーション
型(Int, Int) -> Intは、2つのIntを受け取り、Intを返す関数を表します。これがラムダの型指定方法です。
fun main() {
val op: (Int) -> Int = { x -> x * x }
println(op(5)) // 25
}Unitを返すラムダ
ラムダに有用な戻り値がない場合、その型は() -> Unitです。UnitはKotlinにおけるvoid相当の型です。
fun main() {
val log: (String) -> Unit = { msg -> println("[LOG] $msg") }
log("Hello")
log("World")
}リストへのラムダの格納
ラムダは値なので、集めて後から呼び出すことができます。
fun main() {
val operations: List<(Int) -> Int> = listOf({ it + 1 }, { it * 2 }, { it - 3 })
for (op in operations) println(op(10))
// 11, 20, 7
}ラムダを返す
関数はラムダを返すことができ、そのラムダはクロージャとして周囲の環境をキャプチャします。
fun makeAdder(n: Int): (Int) -> Int = { x -> x + n }
fun main() {
val add5 = makeAdder(5)
println(add5(10)) // 15
println(add5(20)) // 25
}変数をキャプチャするラムダ
ラムダは外側のスコープにある変数を読み取れます。また、varの場合はその変数を変更することもできます。
fun main() {
var counter = 0
val increment = { counter++ }
increment(); increment(); increment()
println(counter) // 3
}ラムダと無名関数の比較
Kotlinにはfun(x: Int): Int = x * 2形式の無名関数もあります。ラムダと同様に動作しますが、戻り値の型を明示でき、ラベル付きのreturnにも対応しています。
fun main() {
val square = fun(x: Int): Int { return x * x }
println(square(8)) // 64
}クイックチェック
型(Int) -> Stringは何を表しますか。
まとめ
ラムダは{ params -> body }と記述する無名関数です。型は(ParamTypes) -> ReturnTypeで表します。ラムダは格納、受け渡し、返却ができ、外側のスコープにある変数をキャプチャできます。
よくある質問
「Lambdaとは?構文と型」レッスンは無料ですか?
はい。「Lambdaとは?構文と型」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kotlin Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kotlin Academyコースには全4レッスンが含まれています。
「Lambdaとは?構文と型」で何を学びますか?
ラムダ式の構文、パラメータの型、戻り値について理解します。 ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Kotlin Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのKotlin Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Lambdaとは?構文と型」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このKotlin Academyレッスンでコードを書いて実行できますか?
はい。すべてのKotlin Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Lambdaとは?構文と型
- 関数にLambdaを渡す
- it:暗黙のパラメータ
- コレクションのfilter、map、find