Wir haben vergessen, unsere Speicher-Variable im Paketrumpf zu initialisieren. So enthält sie für jeden Eintrag die Variante für den Schreibtisch und beim Lesen schlägt der Diskriminantenvergleich zwischen Inhalt und Speicher (Inhalt.Schlüssel) fehl. Allerdings kann diese Initialisierung ziemlich mühevoll werden, wenn man sie nicht geschickt macht. Als Erstes fügen wir dem Verbund Akten noch eine Komponente hinzu, die angibt, ob überhaupt etwas vorhanden ist:

Der Paketrumpf erhält einen ausführbaren Teil (er wird während der Elaboration ausgeführt):

Zu unserem Leidwesen müssen wir bei dieser Methode die gesamte Verbunddeklaration in einem gewissen Sinne wiederholen. Wenn wir viele Schlüsselvarianten haben, kann das ziemlich mühevoll werden. Glücklicherweise ist das auch völlig überflüssig, wenn wir bei der Deklaration von Akten gleich die richtigen Vorbelegungswerte mitgeben (soweit erforderlich):

Die Initialisierung ist nun ganz einfach.

Man beachte die Variablendeklaration ohne Initialisierung – eine Konstante benötigte einen Initialwert und wir stünden vor dem Problem, wie wir ihn angeben könnten. (Nebenbei: Deklarationen ohne Initialisierung sind durch manche Codingstandards streng verboten, vor allem, wenn der Variablen wie hier nie ein Wert zugewiesen wird! Wie wir gesehen haben, ist jedoch auch so scheinbar Unsinniges manchmal unumgänglich und – wenn man es richtig macht – auch völlig korrekt.)


Ada Magica
Inhaltsverzeichnis