Kotlinで3つの関数のパラメータを省略する

Kotlinでは拡張関数が定義されており、拡張関数を使うことで1つ関数のパラメータを省略できます。

fun hoge(a: String) {
  println(a)
}

->

fun String.hoge() {
  println(this)
}

次に、インターフェース(クラス)内で拡張関数を定義することで、さらに1つの関数のパラメータを省略できます。

interface User

fun hoge(a: String, b: User) {
  println(a)
  println(b)
}

->

interface User {
  fun String.hoge() {
    println(this)
    println(this@User)
  }
}

さらに、reified type parameterを使うことで、関数のパラメータを省略できます。

fun <T> hoge(a: String, b: User, c: Class<T>) {
  println(a)
  println(b)
  println(c)
}

->

class User {
  inline fun <reified T> String.hoge() {
    println(this)
    println(this@User)
    println(T::class)
  }
}

interfaceだと、inline関数が使えないのでクラスで定義してあります。

まとめ

Written by