Если вы действительно не без ума от {
и некоторых запятых, ниже приведен абсолютно действительный Kotlin код:
data class Person(
val name: String,
val age: Int
)
val person = Person(
name = "John",
age = 25
)
Я действительно близок к тому, что вы хотите, и выходит из- the-box.
Конечно, вы можете добиться желаемого синтаксиса, написав дополнительный код, например:
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)
}
Но зачем это делать?