kotlinは任意のクラスに後からメソッドを追加できます。これを拡張関数と呼びます。
fun String.print() {
System.out.println(this)
}
val text = "Hello"
text.print()
// > Hello
Kotlinの標準ライブラリには「スコープ関数」と呼ばれる4つの拡張関数があります。 スコープ関数は特定の型ではなく、ジェネリクスで定義されているため全てのクラスで利用可能です。 (withもありますがほとんど使わないので省略します)
- apply
- let
- run
- also
public inline fun <T, R> with(receiver: T, f: T.() -> R): R = receiver.f()
val s = with("hoge") { toUpperCase() }
fun <T> T.apply(block: T.() -> Unit): T
val arguments = Bundle().apply { putString(ARGS_NAME, name) }
fun <T, R> T.let(block: (T) -> R): R
adapter.clickSubject
.subscribe({ SampleDialogFragment.show(it, this) })
.let { compositeDisposable.add(it) }
fun <T, R> T.run(block: T.() -> R): R
val intent