Kotlin Builder против конструктора

Я довольно новичок в Kotlin, и я столкнулся с обоими этими представлениями:

Car(name = "CarName") 

а также

 car { name = "CarName" } 

Существуют ли какие-либо указания относительно того, какой из них следует использовать? Документы , похоже, не слишком ясны.

Второй фрагмент – пример того, как вы можете создать 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 } } } 

Это отличный пример того, когда вы можете использовать DSL: синтаксис позволяет создать чистую структуру того, как вы создаете свои модели. Anko для другого предоставляет DSL для определения пользовательских интерфейсов.