Поиск…


замечания

Тип-безопасный строитель представляет собой концепцию, а не функцию языка, поэтому она не является строго формализованной.

Типичная структура типа безопасного строителя

Одна функция-строитель обычно состоит из трех шагов:

  1. Создайте объект.
  2. Выполните lambda для инициализации объекта.
  3. Добавьте объект в структуру или верните его.

Тип-безопасные сборщики в библиотеках Котлин

Концепция типов безопасных строителей широко используется в некоторых библиотеках и структурах Котлин, например:

  • Анко
  • Wasabi
  • Ktor
  • спекуляция

Тип-древовидный строитель

Строителей можно определить как набор функций расширения, принимающих лямбда-выражения с приемниками в качестве аргументов. В этом примере создается меню JFrame :

import javax.swing.*

fun JFrame.menuBar(init: JMenuBar.() -> Unit) {
    val menuBar = JMenuBar()
    menuBar.init()
    setJMenuBar(menuBar)
}

fun JMenuBar.menu(caption: String, init: JMenu.() -> Unit) {
    val menu = JMenu(caption)
    menu.init()
    add(menu)
}

fun JMenu.menuItem(caption: String, init: JMenuItem.() -> Unit) {
    val menuItem = JMenuItem(caption)
    menuItem.init()
    add(menuItem)
}

Эти функции затем могут быть использованы для создания древовидной структуры объектов простым способом:

class MyFrame : JFrame() {
    init {
        menuBar {
            menu("Menu1") {
                menuItem("Item1") {
                    // Initialize MenuItem with some Action
                }
                menuItem("Item2") {}
            }
            menu("Menu2") {
                menuItem("Item3") {}
                menuItem("Item4") {}
            }
        }
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow