Код IT
← Каталог

DSL и функции с получателем в Kotlin — Свой мини-DSL — меню

Фрагмент из «DSL и функции с получателем в Kotlin»: Свой мини-DSL — меню.

Kotlin main.kt
class MenuBuilder {
    private val items = mutableListOf<String>()

    fun item(text: String) {
        items += text
    }

    fun build(): List<String> = items.toList()
}

fun menu(block: MenuBuilder.() -> Unit): List<String> =
    MenuBuilder().apply(block).build()

val lunch = menu {
    item("Суп")
    item("Салат")
    item("Чай")
}
class MenuBuilder {
    private val items = mutableListOf<String>()

    fun item(text: String) {
        items += text
    }

    fun build(): List<String> = items.toList()
}

fun menu(block: MenuBuilder.() -> Unit): List<String> =
    MenuBuilder().apply(block).build()

val lunch = menu {
    item("Суп")
    item("Салат")
    item("Чай")
}