====== Tcl array unset tips ======
This page is part of the Tcl/Tk page of the Airplug documentation.\\
[[en:doc:pub:tcltk:start|Back to the Tcl/Tk page]] /
[[en:doc:summary|Back to Airplug documentation page]].
---
The following code creates an array and displays its elements.
set tableau(1) un
set tableau(2) deux
set tableau(3) trois
for {set i 1} { $i <= 3 } {incr i} {
puts stdout "tableau($i) = $tableau($i)"
}
The following instructions delete either a single element or the whole array:
unset tableau(2)
array unset tableau
However, this may fail. Indeed, if the elements of the array are displayed in the GUI, then the unset will not be done. Here is an example:
#!/usr/bin/wish
set tableau(1) un
set tableau(2) deux
set tableau(3) trois
label .tab2 -textvariable tableau(2)
pack .tab2
for {set i 1} { $i <= 3 } {incr i} {
puts stdout "tableau($i) = $tableau($i)"
}
# destroy .tab2
unset tableau(2)
for {set i 1} { $i <= 3 } {incr i} {
if { [info exists tableau($i) ] } {
puts stdout "tableau($i) = $tableau($i)"
}
}
The execution gives:
tableau(1) = un
tableau(2) = deux
tableau(3) = trois
tableau(1) = un
tableau(2) = deux
tableau(3) = trois
Now if the widget ''tab2'' is destroyed before the ''unset'' command (by removing the comment ''#'' before the ''destroy'' command in the previous code), then it works as expected. The execution gives then:
tableau(1) = un
tableau(2) = deux
tableau(3) = trois
tableau(1) = un
tableau(3) = trois
This should be taken into account when arrays are displayed and then modified or reset: destroying the widgets, unset the arrays, resetting the widget.
----
This page is part of the Tcl/Tk page of the Airplug documentation.\\
[[en:doc:pub:tcltk:start|Back to the Tcl/Tk page]] /
[[en:doc:summary|Back to Airplug documentation page]].