Zamierzam użyć official example z dokumentacji, która implementuje DSL do tworzenia HTML.Dyski bezpieczne dla budlin typu Kotlin, bezpieczeństwo dla najbardziej zewnętrznej funkcji
Od czasu wersji Kotlin 1.1 adnotacja @DslMarker
pozwala nam ograniczyć zakres funkcji w naszych klasach, podobnie jak w przypadku przykładu z adnotacją @HtmlTagMarker
. To daje nam błąd podczas próby zapisu nieprawidłowo zorganizowanego kodu:
html {
body {
body { // this in an error, as it's a function call on the outside Html element
}
}
}
Jednak to nie przeszkadza gniazdowania funkcję zewnętrzną, która jest punktem wyjścia do DSL. Na przykład, na przykładzie, jak to jest teraz, to może być zapisane bez problemów:
html {
html {
}
}
Czy istnieje jakiś sposób, aby DSL bezpieczniejsze w tym zakresie?
To w zasadzie doskonałe, dzięki! – zsmb13