← Каталог
DSL и функции с получателем в Kotlin — Дополнительный сниппет — вложенный билдер
Фрагмент из «DSL и функции с получателем в Kotlin»: Дополнительный сниппет — вложенный билдер.
class QueryBuilder {
private val parts = mutableListOf<String>()
fun select(vararg fields: String) {
parts += "SELECT " + fields.joinToString(", ")
}
fun from(table: String) {
parts += "FROM $table"
}
fun build(): String = parts.joinToString(" ")
}
fun query(block: QueryBuilder.() -> Unit): String =
QueryBuilder().apply(block).build() class QueryBuilder {
private val parts = mutableListOf<String>()
fun select(vararg fields: String) {
parts += "SELECT " + fields.joinToString(", ")
}
fun from(table: String) {
parts += "FROM $table"
}
fun build(): String = parts.joinToString(" ")
}
fun query(block: QueryBuilder.() -> Unit): String =
QueryBuilder().apply(block).build()