Kotlin Builder vs Constructor

Ber*_*rnd 7 dsl kotlin

我对Kotlin很新,而且我遇到过这两种表述:

Car(name = "CarName")
Run Code Online (Sandbox Code Playgroud)

car { 
  name = "CarName"
}
Run Code Online (Sandbox Code Playgroud)

是否有关于何时应该使用哪一个的指导方针?这些文档似乎并不太清楚.

nha*_*man 8

第二个片段是您如何为您的域构建DSL的示例.对于像这样的简单情况,创建DSL有点过分,但是当你的对象变大时,设计DSL可能会更清晰.
实际上,使用DSL样式创建简单实例甚至可能会令人困惑.

例如,有关DSL的文档显示以下代码:

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
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是您何时可以使用DSL的一个很好的示例:语法可以为您创建模型的方式提供清晰的结构.另一个Anko提供了一个定义UI的DSL.