I'm new to Kotlin DSL and unfortunately I can't find a corresponding reference in the documentation. I probably missed that somewhere and also can't find the right keywords for a successful search on Google.
I have the following code
data class Address(val street: String, val number: String, val city: String)
data class Person(val name: String, val age: Int, val email: String, val address: Address)
class AddressBuilder(
var street: String = "Blumenstraße",
var number: String = "13",
var city: String = "Entenhausen",
) {
fun build() = Address(street, number, city)
}
class PersonBuilder {
var name: String = "Donald Duck"
var age: Int = 41
var email: String = "donald@duck.com"
private var addressBuilder: AddressBuilder = AddressBuilder()
fun address(block: AddressBuilder.() -> Unit) {
addressBuilder.apply(block)
}
fun build() = Person(name, age, email, addressBuilder.build())
}
fun person(block : PersonBuilder.() -> Unit) = PersonBuilder().apply(block).build()
println(person {
name = "Tick Duck"
email = "tick@duck.de"
age = 13
address {
street = "Blumenstraße"
number = "13"
city = "Entenhausen"
email = "cry@why.com"
}
})
Output is Person(name=Tick Duck, age=13, email=cry@why.com, address=Address(street=Blumenstraße, number=13, city=Entenhausen))
My question: why can I set email in address?
Thanks for reading this!