Kotlin の takeIf を使ってみる

takeIf は知ってるが、どうも使ったことがなく、何か良いことがあるのか分からない。

公式ドキュメントはこちら(すごくシンプル)

takeIf - Kotlin Programming Language

試しに使ってみるか

こういうdata classがあったとして

data class Status(
    val isError: Boolean = false,
    val data: Int = 0
)

例えば

  • isErrorがfalseなら、dataの値を取得して処理を継続させたい
  • もしisErrorがtrueならreturnして処理は停止させる

という動きにする。

ifパターンと、takeIfパターンのコードを書いてみた。

/**
 * ifパターン
 */
fun useIf(status: Status) {
    val data = if (!status.isError) status.data else return
    println("$data を使う")
}

/**
 * takeIfパターン
 */
fun useTakeIf(status: Status) {
    val data = status.takeIf { !it.isError }?.data ?: return
    println("$data を使う")
}

うーん、どっちでもいいな
takeIfを使わなくてもやっていけそう

むしろ有効活用してるコードを見てみたい、自分が知らないだけか...