Kotlin: From Arg To Receiver

Kotlin 小技。メソッド呼び出しで receiver が null かどうかのチェックは safe call で簡単に書けるけれど、引数をチェックして null なら呼ばないという記法はない。そこで引数を receiver にするラッパを書けば良い。

fun String.addToList(list: MutableList<String>) = list.add(this)

val list = ArrayList<String>() val hello = if (0 < args.size) "Hello" else null

// Instead of // if (hello != null) // list.add(hello) hello?.addToList(list)

メソッドチェインぽいのを書きやすくなって良い。なお extension method の receiver を nullable にするという狂った機能もあるのだけれど、呼び出し側で足りることが多そう。