Kotlinには、ある条件を満たさないときだけ値を返す便利な関数takeUnlessがあります。takeIfの逆の動作をするもので、特定の値を除外したいときや、条件に合わないデータだけを通したいときに役立ちます。
基本的な使い方
Kotlin
val input = 10
val result = input.takeUnless { it < 5 }
println(result) // 出力: 10- 条件
it < 5がfalseなので、値はそのまま返ります。 - 条件がtrueなら、
nullが返されます。
条件に合った場合(nullになる)
Kotlin
val input = 3
val result = input.takeUnless { it < 5 }
println(result) // 出力: null3はit < 5を満たしているため、除外されてnullになります。
takeIfとの比較
Kotlin
val value = "kotlin"
val a = value.takeIf { it.startsWith("k") } // 条件を満たす → "kotlin"
val b = value.takeUnless { it.startsWith("k") } // 条件を満たす → nulltakeIf: 条件を満たすときだけ値を返すtakeUnless: 条件を満たさないときだけ値を返す
実用例:バリデーションで不正な値を除外
Kotlin
fun processAge(age: Int?): String {
return age
?.takeUnless { it < 0 || it > 120 }
?.let { "年齢: $it" }
?: "不正な年齢です"
}
println(processAge(30)) // 年齢: 30
println(processAge(150)) // 不正な年齢ですまとめ
| 関数名 | 使いどころ |
|---|---|
takeUnless | 条件を満たさない場合のみ値を返す |
takeIf | 条件を満たす場合のみ値を返す |
?.let | nullを排除して安全に処理する |
takeUnlessは、否定条件を扱う場面でコードの可読性を高めてくれる便利な関数です。特にバリデーションやフィルタリング処理などで重宝します。if文で書きがちな処理を1行で簡潔にまとめたいときに、ぜひ活用してみてください。


