Tcl8.5 Dictionaries per 'append' verknüpfen
26. April 2010 | 10:50:13
Legen wir die folgenden drei Dictionaries für unser Beispiel an:
Nun wollen wir die einzelnen Dictionaries per dict append mit einander verknüpfen. Und zwar so, dass wir folgende (verschachtelte) Struktur erhalten:
D.h., md3 soll an md2 angehängt werden und dies dann wiederrum an md1. Dies erreicht man z.B. so:
Man beachte die Reihenfolge!
Falsch wäre folgende Vorgehensweise:
Warum? Tcl hätte statt des Ausdrucks [dict get $md1 1] gern eine Dictionary-Variable, die das Ergebnis dann auch dauerhaft behält.
Bestimmt gibt es auch eine Möglichkeit, dies auch in der gedanklich "richtigen" Reihenfolge zu bewerkstelligen, d.h. erweitere Key[1] von md1 um md2 und dann Key[1][2] um md3. Aber ich vermute, dass der Aufwand hier den Nutzen übersteigt und bevorzuge daher weiterhin die zuerst gezeigte Vorgehensweise (Variante 1).
set md1 [dict create 1 {descr "dict 1"}]
set md2 [dict create 2 {descr "dict 2"}]
set md3 [dict create 3 {descr "dict 3"}]1 {descr "dict 1" 2 {descr "dict 2" 3 {descr "dict 3"}}}
# Variante 1
#
dict append md2 2 " $md3"
dict append md1 1 " $md2"Falsch wäre folgende Vorgehensweise:
# Variante 2
#
dict append md1 1 " $md2" ;# liefert noch das richtige Ergebnis
dict append [dict get $md1 1] 2 " $md3" ;# hier geht's schief!Bestimmt gibt es auch eine Möglichkeit, dies auch in der gedanklich "richtigen" Reihenfolge zu bewerkstelligen, d.h. erweitere Key[1] von md1 um md2 und dann Key[1][2] um md3. Aber ich vermute, dass der Aufwand hier den Nutzen übersteigt und bevorzuge daher weiterhin die zuerst gezeigte Vorgehensweise (Variante 1).


Beispiele für BBCodes:
[indent][b]alert[/b]("Hallo");
</script>[/code]
Hinweis: Mittels "Vorschau ausschalten" kann man die Live-Preview-Funktion abschalten. Dies kann sich vorteilhaft auf die Geschwindigkeit bei der Texteingabe auswirken.