Drugi fragment jest przykładem tego, jak można zbudować DSL dla swojej domeny. W prostych przypadkach, takich jak to, jest trochę przesadzone, aby utworzyć DSL, ale gdy twoje obiekty stają się większe, może być czystsze w projektowaniu DSL.
W rzeczywistości używanie stylu DSL do tworzenia prostych instancji może być nawet mylące.
Na przykład the documentation on DSLs przedstawia poniższy kod:
fun result(args: Array<String>) =
html {
head {
title {+"XML encoding with Kotlin"}
}
body {
h1 {+"XML encoding with Kotlin"}
p {+"this format can be used as an alternative markup to XML"}
// an element with attributes and text content
a(href = "http://kotlinlang.org") {+"Kotlin"}
// mixed content
p {
+"This is some"
b {+"mixed"}
+"text. For more see the"
a(href = "http://kotlinlang.org") {+"Kotlin"}
+"project"
}
p {+"some text"}
// content generated by
p {
for (arg in args)
+arg
}
}
}
Jest to doskonały przykład tego, kiedy można użyć DSL: Składnia umożliwia czystą strukturę jak tworzyć modele. Anko dla innego zapewnia DSL do definiowania interfejsów użytkownika.
Prawdopodobnie bardziej pytanie "tylko stylowe", zachęcające do opinii; ale może ci guru Kotlin mogą podać miłą, opartą na faktach odpowiedź. – GhostCat