Kotlin
Konstruktorzy bezpieczni dla typu
Szukaj…
Uwagi
Konstruktor bezpieczny dla typu jest koncepcją, a nie funkcją językową, więc nie jest ściśle sformalizowany.
Typowa struktura budowniczego bezpiecznego dla typu
Pojedyncza funkcja konstruktora zwykle składa się z 3 kroków:
- Utwórz obiekt.
- Wykonaj lambda, aby zainicjować obiekt.
- Dodaj obiekt do struktury lub zwróć go.
Konstruktorzy bezpieczni dla typów w bibliotekach Kotlin
Koncepcja konstruktorów bezpiecznych dla typu jest szeroko stosowana w niektórych bibliotekach i frameworkach Kotlin, np .:
- Anko
- Wasabi
- Ktor
- Spec
Konstruktor struktury drzewa bezpieczny dla typu
Konstruktory można zdefiniować jako zestaw funkcji rozszerzających, przyjmujących jako argumenty wyrażenia lambda z odbiornikami. W tym przykładzie budowane jest menu 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)
}
Tych funkcji można następnie użyć do zbudowania struktury drzewiastej obiektów w prosty sposób:
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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow