module mod_vtm_helfer { /** * @author kcf */ export class klasse_hashmap { /** * @author kcf */ private hashfunction : (schluessel : typ_schluessel)=>string; /** * @author kcf */ private speicher : {[hashwert : string] : {schluessel : typ_schluessel; wert : typ_wert;}}; /** * @author kcf */ public constructor(hashfunction : (schluessel : typ_schluessel)=>string) { this.hashfunction = hashfunction; this.speicher = {}; } /** * @author kcf */ public setzen(schluessel : typ_schluessel, wert : typ_wert) : void { let hashwert : string = this.hashfunction(schluessel); this.speicher[hashwert] = {"schluessel": schluessel, "wert": wert}; } /** * @author kcf */ public holen(schluessel : typ_schluessel) : schnittstelle_fehlermonade { let hashwert : string = this.hashfunction(schluessel); if (hashwert in this.speicher) { let wert : typ_wert = this.speicher[hashwert].wert; return (new klasse_schlicht(wert)); } else { return (new klasse_nichts()); } } /** * @author kcf */ public iterieren(prozedur : (schluessel ?: typ_schluessel, wert ?: typ_wert)=>void) : void { Object.keys(this.speicher).forEach ( (hashwert) => { let paar : {schluessel : typ_schluessel; wert : typ_wert;} = this.speicher[hashwert]; prozedur(paar.schluessel, paar.wert); } ) ; } } }