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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- letとrun
- applyとalso
- with
- 適切な関数の選び方