【发布时间】:2017-04-18 09:19:37
【问题描述】:
我将使用文档中的 official example 来实现一些 HTML 创建。
从 Kotlin 1.1 开始,@DslMarker 注释允许我们限制类中函数的范围,就像示例使用 @HtmlTagMarker 注释一样。当我们尝试编写这样的结构不正确的代码时,这会给我们一个错误:
html {
body {
body { // this in an error, as it's a function call on the outside Html element
}
}
}
但是,这并不妨碍嵌套最外层的函数,它是 DSL 的入口点。例如,以现在的示例为例,可以毫无问题地写下来:
html {
html {
}
}
在这方面有什么方法可以让 DSL 更安全?
【问题讨论】: