Tcl/Tk: Array als Paramter an Funktion übergeben

Vor der Version 8.5 konnte man in Tcl Arrays nur auf nachfolgend gezeigtem Wege als Argument an Funktionen übergeben und innerhalb dieser darauf zugreifen. Mit Version 8.5 bekam Tcl den Typ Dictionary spendiert, der diese ganze Angelegenheit (Übergabe an Funktionen und Zugriff darauf) wesentlich vereinfachte und beschleunigte. Aber leider bin ich momentan zu Tcl 8.4 verdammt.

Im ersten Abschnitt wird die Übergabe einer einfachen Variablen demonstriert. Im nachfolgenden Abschnitt übergeben wir dann ein Array:
#------------------ einfache Variable testen --------------------------
if { 0 } {
proc testVar { param } {
upvar $param localVar
set m [expr $localVar+1]
}

set globalVar 1

puts "globalVar = $globalVar"
testVar globalVar
puts "globalVar = $globalVar"
}
Nun noch das Beispiel mit dem Array:
#------------------ einfaches Array testen --------------------------
if { 1 } {
proc testAry { param } {
upvar $param localAry
foreach {key val} [array get localAry] {
puts "$key = $val"
}
}

set globalAry(eins) "Eintrag eins"
set globalAry(zwei) "Eintrag zwei"

foreach {key val} [array get globalAry] {
puts "$key = $val"
}

testAry globalAry
}
Nebenbei bemerkt: in Tcl kann man das '#'-Zeichen verwenden, um einen einzeiligen Kommentar zu schreiben (bzw. Code auszukommentieren). Wenn man mehrere Zeilen kommentieren möchte, so muss man vor jeder Zeile das '#'-Zeichen setzen oder - wie im Beispiel gezeigt - if-Blöcke benutzen. Dass ist auch einer der Gründe, warum ich so ein großer "Tcl-Fan" bin ... Achso, noch ein Grund: solltet ihr so etwas wie im folgenden Beispiel schreiben, so rafft der sch... Tcl-Interpreter nicht, dass es sich um Kommentar handelt und wirft statt dessen einen Fehler:
# --- Achte darauf, was bzw. wo du auskommentierst ----

# nachfolgend auskommentiertes if verursacht Fehler (wegen nicht geschlossener
# geschweifter Klammer). Tcl rafft nicht, dass die Zeile auskommentiert wurde (???)
# if { $test == 1 } {
if { $test == 0 } {
...
}
 
 Artikel als Bookmark:
Beitrag wurde bisher 382 mal geöffnet
RA Zabel/Stolze
  • 96 Artikel  (zeigen)
  • 66477 Klicks
  • 56 Kommentare
  • 9 Artikel (2010)  (zeigen)
  • 1853 Klicks (2010)
  • 0 Kommentare (2010)
Freunde / Linkparade (4)