Ricerca…


Osservazioni

Un builder sicuro per i tipi è un concetto, piuttosto che una funzionalità linguistica, quindi non è strettamente formalizzato.

Una tipica struttura di un costruttore sicuro per i tipi

Una singola funzione di generatore di solito consiste in 3 passaggi:

  1. Crea un oggetto.
  2. Esegui lambda per inizializzare l'oggetto.
  3. Aggiungi l'oggetto alla struttura o restituiscilo.

Costruttori sicuri di tipo nelle librerie Kotlin

Il concetto di builder sicuri per i tipi è ampiamente usato in alcune librerie e framework di Kotlin, ad es .:

  • Anko
  • Wasabi
  • KTOR
  • Spec

Costruttore di strutture ad albero sicuro per tipo

I builder possono essere definiti come un insieme di funzioni di estensione che assumono espressioni lambda con i ricevitori come argomenti. In questo esempio, viene creato un menu di un 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)
}

Queste funzioni possono quindi essere utilizzate per costruire una struttura ad albero di oggetti in modo semplice:

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow