'''`[array] set`''' sets values in an array. ** Synopsis ** '''`[array] set`''' ''`arrayName list`'' ** Description ** Sets the values of one or more elements in ''`arrayName`''. ''`list`'' must have a form like that returned by '''`[array get]`''', consisting of an even number of elements. Each odd-numbered element in ''`list`'' is treated as an element name within ''`larrayName`'', and the following element in ''`list`'' is used as a new value for that array element. If the variable ''`arrayName`'' does not already exist and ''`list`'' is empty, ''`arrayName`'' is created with an empty array value. For example, ======none array set val [list a 1 c 6 d 3] puts $val(a) 1 puts $val(c) 6 puts $val(d) 3 ====== Example using lindex: ====== set port {a 1} array set val [list [lindex $port 0] [lindex $port 1]] set val([lindex $port 0]) ;# -> 1 ====== Note that `array set` does not remove elements which already exist in the array. For example, ====== array set spam {} ;# This does not work ====== ...will not clear out the array ''spam''. To clear an array, can use [array unset] in version 8.3 and beyond. For example: ====== array unset spam ====== ...will remove the array ''spam'' if it exists, but will not complain if it does not. ====== array unset spam * ====== ...will clear the contents of the array ''spam'', but the array will continue to exist. This feature makes it easier to work with array variables, but it can come as a surprise to those who expected ''array set'' to act like the normal [set] command (which replaces any existing data in the variable). It might be useful to think of it as ''array append''. [RS]: Sometimes [array set] adds new elements (appending implies some order, which arrays don't so clearly have), sometimes it replaces existing elements. So I still think the name [array set] is clearer... ---- [RFox] 2012-03-14: A better name might have been ''array merge'' as that describes exactly what it does.. it merges the list of index/value into the named array creating it if needed. The term merge implies the possible replacement of existing indices and creation of new ones. <> Command | Tcl syntax help