gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 12:21:15 24 4
gpt4 key购买 nike

我们使用 kotlin dsl 作为用户友好的构建器来获取输入和生成数据。有没有办法做相反的事情?
即,将现有数据转换为 dsl ?
这个 kotlin 表示可以转换为 dsl 吗?

val person = Person("John", 25)
val person = person {
name = "John"
age = 25
}

最佳答案

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

data class Person(
val name: String,
val age: Int
)

val person = Person(
name = "John",
age = 25
)
我似乎非常接近您想要的东西并且开箱即用。
当然,您可以通过编写一些额外的代码来实现您想要的语法,例如:
import kotlin.properties.Delegates

data class Person(
val name: String,
val age: Int
)

class PersonDSL{
lateinit var name: String
var age: Int by Delegates.notNull<Int>()

fun toPerson(): Person = Person(this.name, this.age)
}

fun person(config: PersonDSL.() -> Unit): Person{
val dsl = PersonDSL()

dsl.config()

return dsl.toPerson()
}

fun main(){
val person = person {
name = "John"
age = 25
}
println(person) // Person(name=John, age=25)
}
但为什么要这样做?

关于kotlin - 有没有办法使用数据生成kotlin dsl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62497964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com