我对Kotlin很陌生,而且我遇到过这两种说法:
Car(name = "CarName")
和
car {
name = "CarName"
}
是否有关于何时应该使用哪一个的指导方针? The docs似乎对此不太清楚。
答案 0 :(得分:8)
第二个代码段是您如何为您的域构建DSL的示例。对于像这样的简单情况,创建DSL有点过分,但是当你的对象变大时,设计DSL可能会更清晰。
事实上,使用DSL风格创建简单的实例可能会让人感到困惑。
例如,the documentation on DSLs显示以下代码:
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提供了一个用于定义UI的DSL。