Nir Yudovitz
12/30/2019, 1:33 PMmap = mapOf("one" to 1, "two" to "2")
magicWith(map) {
one // 1
two // "2"
}
(I don’t want to create a data class to reduce boilerplates)LeoColman
12/30/2019, 1:34 PMLeoColman
12/30/2019, 1:34 PMLeoColman
12/30/2019, 1:35 PMLeoColman
12/30/2019, 1:35 PMLeoColman
12/30/2019, 1:35 PMLeoColman
12/30/2019, 1:35 PMLeoColman
12/30/2019, 1:37 PMdata class MyData(val one: Int, val two: String)
would make things explicit in whichever flow you're usingMarc Knaup
12/30/2019, 1:38 PMDelegate
and then use it like this:
magicWith(map) {
val one by name
val two by name
}
Or just:
val one by map
val two by map
Marc Knaup
12/30/2019, 1:39 PMLeoColman
12/30/2019, 1:40 PMmagicWith(map) {
it["one"] // 1
it["two"] // 2
}
LeoColman
12/30/2019, 1:41 PMget
LeoColman
12/30/2019, 1:41 PMMarc Knaup
12/30/2019, 1:42 PMval map = mapOf("one" to 1, "two" to "2")
val one by map // Any?
val two by map // Any?
operator fun <Value> Map<String, Value>.getValue(thisRef: Any?, property: KProperty<*>) =
this[property.name]
LeoColman
12/30/2019, 1:44 PMLeoColman
12/30/2019, 1:44 PMMarc Knaup
12/30/2019, 1:45 PMMarc Knaup
12/30/2019, 1:47 PMwith(map.asDynamic()) {
one
two
}
I have no idea how Kotlin/JS handles a dynamic
this
.Marc Knaup
12/30/2019, 1:54 PMNir Yudovitz
12/30/2019, 2:20 PM