Kotlin extensions
既存の(すでに定義済み)オブジェクトに、メソッドの追加を後付(コードを書くとき?)したい。
Util用のファイルに書いていく? その場(ファイル)で定義してでも良いかも
this(instance)を使う形が多くなるので、なんとなく javascriptや python(self)の記憶が蘇る.
the ability to extend a class with new functionality without having to inherit from the class or use any type of design pattern such as Decorator
(java)みたいな継承つかったり、(python)みたいにdecoratorを使ったりせずに、オブジェクトにメソッドを追加したい?
until, downTo, stepなども、(Int)の拡張関数 + 中置きできるので 2.until(5)を、2 until 5と書ける
中置きできる条件はある。
StringBuilderを拡張する。
元々、builder部分はできあがってる。
組み立て工程で、一部分だけ可変にしたい、つまり1部分だけを後付にしたい。
wrapperみたいな用途?に思えた。
code: extension_functions_string_builder.kt
fun buildString(build: StringBuilder.() -> Unit): String {
val stringBuilder = StringBuilder()
stringBuilder.build()
return stringBuilder.toString()
}
val s = buildString {
this.append("Numbers: ")
for (i in 1..3) {
// 'this' can be omitted
append(i)
}
}
s == "Numbers: 123"
True