onEachでリスト操作の可読性を向上

Kotlin
記事内に広告が含まれる場合があります

Kotlinの onEach 関数を使うと、リストの各要素を処理しながら、そのままリストを返すことができます。ログ出力やデバッグ時に役立つだけでなく、メソッドチェーンを使った可読性の高いコードを実現できます。

onEachの基本的な使い方

1. リストを処理しながら、そのままリストを返す

Kotlin
val numbers = listOf(1, 2, 3, 4, 5)

val result = numbers.onEach { println("処理中: $it") }

println(result)
// 出力:
// 処理中: 1
// 処理中: 2
// 処理中: 3
// 処理中: 4
// 処理中: 5
// [1, 2, 3, 4, 5]

ポイント:

  • onEach 内で各要素に対する処理を実行できる
  • 元のリストは変更されずにそのまま返る(副作用を持たない)

2. mapとの違い

map は新しいリストを返すが、onEach は元のリストを返す。

Kotlin
val doubled = numbers.map { it * 2 }
println(doubled) // 出力: [2, 4, 6, 8, 10]

val debugNumbers = numbers.onEach { println("値: $it") }
println(debugNumbers)
// 出力: 
// 値: 1
// 値: 2
// 値: 3
// 値: 4
// 値: 5
// [1, 2, 3, 4, 5]

どちらを使うべきか?
リストを変換するなら map
処理を追加しながらリストをそのまま返すなら onEach


3. メソッドチェーンでの活用

Kotlin
val processedNumbers = numbers
    .filter { it % 2 == 0 }
    .onEach { println("偶数: $it") }
    .map { it * 10 }

println(processedNumbers)
// 出力:
// 偶数: 2
// 偶数: 4
// [20, 40]

このように、filtermap と組み合わせることで、処理の流れを明確に記述 できます。


onEachを活用するメリット

  1. リストを変更せずにデバッグやログ出力を挟める
  2. mapfilter との組み合わせでメソッドチェーンが見やすくなる
  3. リストを変換せずにそのまま返せるので副作用を避けられる

リストのデバッグや、処理を可視化しながらスムーズにデータを扱いたい場合は、ぜひ onEach を活用してみてください!

タイトルとURLをコピーしました