2016-06-27 24 views
0

einige dicts Lassen Sie wie folgt:Erhalten Wörterbuch Wert von Variablennamen aus variablen Werten aufgebaut

set d0 [dict create key1 value1] 
set d1 [dict create key1 value1] 

ich jetzt brauche value1 für jedes Wörterbuch zu erhalten, sagen wir in einer Schleife:

for {set i 0} {$i < 2} {incr i} { 
    dict get $d$i 
} 

Meine Problem liegt in der 2. Zeile der Schleife, in der ich nicht verketten kann und den Wörterbuchwert richtig erhalten, diese Struktur benötigt eine $, um den Wörterbuchnamen aufzurufen, im Gegensatz zu dem dict append Befehl habe ich versucht,zu verwenden, [], concat oder join ohne Erfolg, sicherlich fehlt mir etwas oder missversteht die Art, wie Tcl geschrieben werden soll.

Antwort

2

Ihre sofort Lösung ist:

dict get [set d$i] ... 

Als $ für den Single-Argumentset Befehl weitgehend ein restriktiver syntaktischer Zucker ist.

Denken Sie jedoch daran, die Wörterbücher in ein Array zu stellen.

set d(0) [dict create key1 value1] 
set d(1) [dict create key1 value1] 
for {set i 0} {$i < 2} {incr i} { 
    dict get $d($i) ... 
} 

Die Syntax dafür ist viel schöner!