```inline fun <K, V> buildMap(init: MapBuild...
# getting-started
k
Copy code
inline 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()
  }
}