スコープ関数

Kotlinの**スコープ関数(Scope Functions)**は、オブジェクトのコンテキスト内で一時的に処理を実行できる便利な関数群です。スコープ関数を使用することで、コードの可読性や簡潔性を高めることができます。

Kotlinには以下の5つのスコープ関数があります:

関数名 レシーバの参照方法 戻り値 主な用途
let it ラムダの戻り値 nullチェック、一時的な処理
run this ラムダの戻り値 初期化、構成設定
with this ラムダの戻り値 既存オブジェクトに操作
apply this オブジェクト自身 オブジェクト構成
also it オブジェクト自身 ロギング、デバッグ処理

1. let

kotlin
val name: String? = "Kotlin" name?.let { println("名前は $it です") }
  • nullチェックを簡潔に記述できる。

  • レシーバは it として参照。

  • 戻り値はラムダ式の評価結果。


2. run

kotlin
val result = "Kotlin".run { println("この文字列の長さは $length") length }
  • オブジェクトのプロパティや関数に this でアクセス。

  • 初期化や計算など、ブロックの結果を返す処理に使う。


3. with

kotlin
val sb = StringBuilder() val result = with(sb) { append("Hello, ") append("World!") toString() }
  • レシーバは this

  • 最も古いスコープ関数。

  • オブジェクトを引数に渡して、処理をまとめるのに向いている。


4. apply

kotlin
val person = Person().apply { name = "Taro" age = 20 }
  • オブジェクトの初期化や設定に適している。

  • レシーバは this

  • 戻り値はオブジェクト自身。


5. also

kotlin
val list = mutableListOf("A", "B").also { println("初期リスト: $it") it.add("C") }
  • オブジェクトに何か「追加の処理(also)」を行いたいときに使う。

  • レシーバは it

  • 戻り値はオブジェクト自身。


選び方の指針

処理内容 推奨関数
結果を返す処理をまとめたい let, run, with
オブジェクトの構成や初期化 apply
副作用的な処理(ログなど) also

まとめ

スコープ関数を使いこなすことで、以下のようなメリットがあります:

  • コードの簡潔化(プロパティアクセスの省略)

  • null安全処理の向上

  • 初期化や構成処理の整理

適切なスコープ関数を選択することで、Kotlinの表現力を最大限に活用できます。

生成日:2025/05/04