0Pricing
Kotlin Academy · レッスン

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Lambdaとは?構文と型
  2. 関数にLambdaを渡す
  3. it:暗黙のパラメータ
  4. コレクションのfilter、map、find
← Kotlin Academyに戻る