takeIfとtakeUnlessで条件付きデータ処理を簡単に

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

Kotlinには、条件を満たす場合にのみ値を返す takeIf と、条件を満たさない場合に値を返す takeUnless という便利な関数があります。これらを使うことで、条件付きのデータ処理を簡潔に記述できます。

takeIfの基本的な使い方

takeIf指定した条件を満たす場合にのみ値を返す 関数です。

Kotlin
val number = 10

val result = number.takeIf { it > 5 } ?: "条件を満たしていません"

println(result) // 出力: 10

ここでは、number5 より大きいため、そのまま 10 が返されます。一方で、条件を満たさない場合は null になるため、?: 演算子を使ってデフォルト値を指定できます。

takeUnlessの基本的な使い方

takeUnless指定した条件を満たさない場合に値を返す 関数です。

Kotlin
val number = 10

val result = number.takeUnless { it > 5 } ?: "条件を満たしていません"

println(result) // 出力: 条件を満たしていません

takeIf の逆で、条件を満たさない場合に値が返るため、「この条件に該当しないものを取得したい」 というケースで役立ちます。

takeIfとtakeUnlessの活用シーン

  1. バリデーションの簡略
Kotlin
val email = "test@example.com"
val validEmail = email.takeIf { it.contains("@") } ?: "無効なメールアドレス"
println(validEmail) // 出力: test@example.com
  1. ログ出力の最適化
Kotlin
val debugMode = false
debugMode.takeIf { it }?.let { println("デバッグモードが有効") }
// 条件を満たさないため、何も出力されない
  1. 特定条件のデータ抽出
Kotlin
val numbers = listOf(1, 2, 3, 4, 5, 6)
val evenNumbers = numbers.mapNotNull { it.takeIf { it % 2 == 0 } }
println(evenNumbers) // 出力: [2, 4, 6]

まとめ

  • takeIf条件を満たす場合に値を返す
  • takeUnless条件を満たさない場合に値を返す
  • null になる場合があるので、?:let と組み合わせると安全に使える

シンプルな条件分岐をより直感的に記述できるので、コードの可読性を向上させたいときにぜひ活用してみてください!

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