kevinmost
06/22/2016, 6:28 PMinline fun <K, V> buildMap(init: MapBuilder<K, V>.() -> Unit): Map<K, V> {
return MapBuilder<K, V>().apply { init() }.build()
}
class MapBuilder<K, V>() {
val entries = mutableListOf<Pair<K, V>>()
inline fun addIf(predicate: Boolean, maybeAdd: () -> Pair<K, V>) {
if (predicate) {
entries += maybeAdd()
}
}
fun build(): Map<K, V> {
return entries.toMap()
}
}