takeIfの使い方を簡単に知りたい人向け。

 kotlinのスコープ関数であるtakeIfの使いどころをずらずらと。


val nullVer: String? = null
val notNullVer: String? = "NotNull"

//takeIfの基本 takeIf後のラムダ式でtrueならば自分自身を帰し、falseならnullを返す
//この場合trueなのでNotNullが帰る
var test0: String? = notNullVer.takeIf { true }

//takeIfの基本 takeIf後のラムダ式でfalseならばnullを返す
//この場合falseなのでnullが帰る
var test1: String? = notNullVer.takeIf { false }

//自分自身をitで取得できる NotNullが返る
var test2: String? = notNullVer.takeIf { it == "NotNull" }

//エルビス演算子と併用すると便利
//nullだとtakeIfは実行されずエルビス演算子によって"ぬる"が返る
var test3: String? = nullVer.takeIf { it == "" } ?: "ぬる"
//nullじゃなくてもtakeIfでfalseだとnullになるのでエルビス演算子の式が実行される
var test4: String? = notNullVer.takeIf { it == "Null" } ?: "ぬる"

//takeIfの使いどころ その1
// != null と 何かの判断を同時に行うことができる
// notNullVerがnullかどうか、notNullVerが"NotNull"でないかの両方を確認できる
// if文で記述すると if (notNullVer != null & notNullVer != "Null") {処理} を簡潔に記述ができる
var test5: String? = notNullVer.takeIf { it == "Null" } ?: "ぬる"

//takeIfの使いどころ その2
//チェーンメソッドでいろいろなことができる
//notNullVerがnullでなくて、さらに5文字以上だったら、それ以降は切り捨てするというようなことが書ける
var test6: String? = notNullVer?.takeIf { it.length > 5 } ?.let { that -> that.substring(0,5) }