Soren Valle
09/12/2019, 11:05 PMgenericBuilder
, but I don't know all the things.
class GenericClass<T> {
var property: T? = null
fun genericBuilder(builder: T.() -> Unit) {
// how to initialize T?
property?.builder()
}
}
interface Person {
var name: String
var age: Int
}
interface Car {
var make: String
var model: String
}
class ThingHolder<T : Any> {
var thing: T? = null
inline fun <reified P : T> thing(builder: P.() -> Unit) {
val clazz = P::class.js
thing = js("new clazz()").unsafeCast<P>().apply(builder)
}
}
fun <T : Any> thingHolderBuilder(builder: ThingHolder<T>.() -> Unit): ThingHolder<T> {
return ThingHolder<T>().apply(builder)
}
fun main() {
thingHolderBuilder<Car> {
thing<Car> {
make = "Honda"
model = "Civic"
}
}
thingHolderBuilder<Person> {
thing<Person> {
name = "John"
name = "Doe"
}
}
}
Ruckus
09/12/2019, 11:07 PMSoren Valle
09/12/2019, 11:07 PMRuckus
09/13/2019, 12:32 AMSoren Valle
09/13/2019, 1:05 AMEvan R.
09/16/2019, 4:31 PM