有没有办法使用数据生成kotlin dsl

有没有办法使用数据生成kotlin dsl,kotlin,kotlin-dsl,Kotlin,Kotlin Dsl,我们使用kotlin dsl作为用户友好的构建器来获取输入和生成数据。有没有相反的方法? ie,将现有数据转换为dsl 这个kotlin表示可以转换成dsl吗 val person = Person("John", 25) 除非你非常喜欢{和一些逗号,否则下面是一个绝对有效的Kotlin代码: 数据类人员( val name:String, 年龄:整数 ) 个人( name=“John”, 年龄=25 ) 我似乎真的很接近你想要的东西,并且从盒子里出来了 当然,您可以通过

我们使用kotlin dsl作为用户友好的构建器来获取输入和生成数据。有没有相反的方法? ie,将现有数据转换为dsl

这个kotlin表示可以转换成dsl吗

val person = Person("John", 25)

除非你非常喜欢
{
和一些逗号,否则下面是一个绝对有效的Kotlin代码:

数据类人员(
val name:String,
年龄:整数
)
个人(
name=“John”,
年龄=25
)
我似乎真的很接近你想要的东西,并且从盒子里出来了

当然,您可以通过编写一些额外的代码来实现所需的语法,如:

导入kotlin.properties.Delegates
数据类人员(
val name:String,
年龄:整数
)
类PersonDSL{
lateinit变量名称:String
var age:Int by Delegates.notNull()
fun-toPerson():Person=Person(this.name,this.age)
}
有趣的人(配置:PersonDSL.->单位):人{
val dsl=PersonDSL()
dsl.config()
返回dsl.toPerson()
}
主要内容(){
个人{
name=“约翰”
年龄=25
}
println(person)//person(姓名=John,年龄=25岁)
}

但是为什么要这样做呢?

你到底想做什么?将第一个代码片段转换成第二个?你可以很容易地使用PSI@GovindaSakhare是的,准确地说,我正在尝试将现有对象转换为DSL表示。@用户请详细说明。请参阅创建插件。您可以使用to turn Kotlin代码进入DSL表单不是(person)更好的选择吗?也许你可以使用
,但我决定展示这样做DSL的原则。我不是说这是唯一的方法。@madhead我正在尝试为现有数据生成DSL。在一行中
PersonDSL().apply(config).toPerson()
val person = person {
    name = "John"
    age = 25
}