// A map with a default value. Great for counting or binnings things by key.

export class DefaultMap<K, V> extends Map<K, V> {
  private initfn: () => V;

  // Accepts a function that returns the dict's default value, an empty Array for example.
  constructor(fn: () => V) {
    super();
    this.initfn = fn;
  }

  get(key: K): V {
    if (!this.has(key)) {
      this.set(key, this.initfn());
    }
    return super.get(key)!;
  }
}
