Scott Whitman
01/17/2021, 4:21 PMaddress
function below? What are some good practices to handle the Address.Builder
dependency?
fun main() {
val address = address {
street = "123 Any St."
city = "Any city"
}
println(address)
}
fun address(lambda: Address.Builder.() -> Unit): Address {
return Address.Builder().apply(lambda).build()
}
data class Address(
val street: String,
val city: String
) {
class Builder {
var street: String? = null
var city: String? = null
fun build(): Address {
return Address(street!!, city!!)
}
}
}
jbnizet
01/17/2021, 4:34 PMclass AddressDslTest {
@Test
fun `should allow creating an address`() {
val result = address {
street = "Downing street"
city = "London"
}
assertEquals(Address("Downing street", "London"), result)
}
}
Scott Whitman
01/17/2021, 4:47 PMperson
DSL function, It seems I would need to have home
and address
in my person
unit tests.
person {
home {
address {
...
}
...
}
...
}
jbnizet
01/17/2021, 6:03 PMMatteo Mirk
01/18/2021, 11:34 AM