append - Append strings to variable
This Tcl command appends all of the value arguments to the current value of variable varName. If varName doesn't exist, it is given a value equal to the concatenation of all the value arguments. This command provides an efficient way to build up long variables incrementally. For example, append a $b is much more efficient than set a $a$b, if $a is long.
http://www.tcl.tk/man/tcl/TclCmd/append.htm
other string functions: string
similar functions for lists: concat, lappend
Building a string of comma-separated numbers piecemeal using a loop.
set var 0 for {set i 1} {$i<=10} {incr i} { append var "," $i } puts $var # Prints 0,1,2,3,4,5,6,7,8,9,10
NOTE: The append command is a string command. If you want to play with lists, definitely use the concat or lappend commands
Is the result of an append of two lists a list as you might expect it?
(EE: No. The result of an append of two lists is a string, which, if it can form a valid list, will shimmer into list form next time it is treated as one.)
set a [list a b c] set b [list 1 2 3] append a $b puts $a
Note that the third element of this new list is not c, but c1. Does anyone know if there are cases where an append would result in something not a list?
Here's an example of such a case:
set l1 [list a {b c}] set l2 [list {d e} f] append l1 $l2 llength $l1
RS: The intended functionality seems to me to be closer to concat. But if you wish to use append, just add an extra space to separate the parts:
append l1 " " $l2
AMG: Single-argument [append] works just like single-argument [set]: it returns the value of the named variable. This isn't normally useful, but it might come in handy if the {*} expansion operator is used to produce the argument list.
If the variable doesn't exist, [append] dies with the same error that [set] would in the same situation. This is the only time [append] will complain about the variable not existing, since it's normally a creative writer. If the variable exists but is an array, once again single-argument [append] gives the same error as [set], complaining about its inability to "read" it, once again showing single-argument [append] and [set] to be identical. The rest of the time, the errors given by [append] complain about not being able to "set" the variable.
AMG: [append] can be used in a one-liner to initialize a variable's value to empty string if it doesn't exist.
append var ""
In the above code, if $var doesn't exist, it will be created with value set to empty string. If it does exist, its value will be left unchanged. According to [tcl::unsupported::representation], no shimmering is induced.