0Pricing
Kotlin Academy · レッスン

letとrun

オブジェクトを操作します

「letとrun」はCoddyKit上の無料Kotlin Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKotlin Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kotlin Academyコースには全4レッスンが含まれています。

スコープ関数とは

Kotlinには5つのスコープ関数があります。それはlet、run、with、apply、alsoです。これらを使うと、一時的なスコープ内でオブジェクトに対してコードブロックを実行できます。

  • オブジェクトはitまたはthisとして参照します。
  • ブロックは、オブジェクト自体またはラムダの結果を返します。

このレッスンではletとrunに重点を置きます。

let関数

letは、オブジェクトをitとして利用できるブロックを実行し、ラムダの結果を返します。

値がnullでない場合にのみコードを実行したり、値を別のものに変換したりするのに適しています。

fun main() {
    val name = "Alice"
    val length = name.let {
        println("Name is $it")
        it.length
    }
    println("Length: $length")
}

null許容値でのlet

letは、セーフコール演算子?.と組み合わせて使うことが最も一般的です。値がnullでない場合にのみブロックが実行されます。

fun main() {
    val name: String? = "Bob"
    name?.let {
        println("Hello, $it")
    }
    val empty: String? = null
    empty?.let {
        println("This never prints")
    }
    println("Done")
}

let内でitの名前を変更する

let内では、ラムダパラメーターを宣言して、itを意味のある名前に変更できます。

fun main() {
    val price = 100
    price.let { amount ->
        println("The amount is $amount")
    }
}

run関数

runは、オブジェクトをthisとして利用できるブロックを実行し、ラムダの結果を返します。

プレフィックスなしでメンバーにアクセスしたい場合に使用します。

fun main() {
    val text = "Kotlin"
    val upper = text.run {
        println("Length is $length")
        uppercase()
    }
    println(upper)
}

レシーバーなしのrun

runはオブジェクトなしでも呼び出せます。ブロックを実行し、その結果を返すだけです。文をまとめたり、値を計算したりする場合に便利です。

fun main() {
    val result = run {
        val a = 5
        val b = 10
        a + b
    }
    println("Result: $result")
}

itとthis

letとrunの主な違いは、オブジェクトの参照方法です。

  • letはit(パラメーター)を使います。
  • runはthis(多くの場合は暗黙的なレシーバー)を使います。

どちらもブロック内の最後の式の結果を返します。

fun main() {
    val word = "hi"
    val a = word.let { it.length }
    val b = word.run { length }
    println("$a $b")
}

letのチェーン

letはラムダの結果を返すため、呼び出しをチェーンし、値を段階的に変換できます。

fun main() {
    val number = 4
    val output = number
        .let { it * 2 }
        .let { it + 1 }
    println(output)
}

nullチェックと計算に使うrun

letと同様に、runはセーフコールと組み合わせて使えます。nullチェックとメンバーアクセスを1つのブロックにまとめられます。

fun main() {
    val message: String? = "Welcome"
    val length = message?.run {
        println(this)
        length
    }
    println("Length: $length")
}

異なる型を返す

どちらの関数も、オブジェクトとは異なる型を返せます。戻り値の型は、最後の行が評価された結果の型になります。

fun main() {
    val n = 10
    val label: String = n.let { "Value is $it" }
    println(label)
}

letとrunを使う場面

itによる記述が分かりやすい場合は、null安全な操作や値の変換にletを使います。

オブジェクトの複数のメンバーを呼び出して結果を計算したい場合は、thisで直接アクセスできるrunを使います。

確認問題

letとrunの理解度を確認しましょう。

復習

結果を返す2つのスコープ関数について学びました。

  • letはオブジェクトをitとして公開し、ラムダの結果を返します。null安全な変換に適しています。
  • runはオブジェクトをthisとして公開し、ラムダの結果を返します。メンバーアクセスをまとめるのに適しています。

次は、applyでオブジェクトを設定し、alsoで副作用を追加します。

よくある質問

「letとrun」レッスンは無料ですか?

はい。「letとrun」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kotlin Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kotlin Academyコースには全4レッスンが含まれています。

「letとrun」で何を学びますか?

オブジェクトを操作します ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Kotlin Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのKotlin Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「letとrun」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このKotlin Academyレッスンでコードを書いて実行できますか?

はい。すべてのKotlin Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

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

  1. letとrun
  2. applyとalso
  3. with
  4. 適切な関数の選び方
← Kotlin Academyに戻る