Sök…


Anmärkningar

En typsäker byggare är ett koncept snarare än ett språkfunktion, så det är inte strikt formaliserat.

En typisk struktur för en typsäker byggare

En enda byggfunktion består vanligtvis av tre steg:

  1. Skapa ett objekt.
  2. Kör lambda för att initiera objektet.
  3. Lägg till objektet i strukturen eller returnera det.

Typsäkra byggare i Kotlin-bibliotek

Begreppet typsäkra byggare används ofta i vissa Kotlin-bibliotek och ramverk, t.ex.

  • Anko
  • Wasabi
  • Ktor
  • spec

Typsäker trädbyggare

Byggare kan definieras som en uppsättning förlängningsfunktioner som tar lambda-uttryck med mottagare som argument. I det här exemplet byggs en meny med en 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)
}

Dessa funktioner kan sedan användas för att bygga en trädstruktur av objekt på ett enkelt sätt:

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow