Переменные Tcl используют семантику копирования при записи.Вы можете безопасно передавать значение, присваивая ему несколько переменных, не беспокоясь о том, что оно занимает больше места в памяти.
Например,
set x {some list} ;# there is one copy of the list, one variable pointing at it
set y $x ;# there is one copy of the list, two variables pointing at it
set z $y ;# there is one copy of the list, three variables pointing at it
lappend z 123 ;# there are two copies of the list
;# x and y pointing at one
;# z pointing at the other
;# which is different from the first via an extra 123 at the end
Приведенный выше код приведет к двум гигантскимсписки, один с исходными данными, на которые оба x указывают y, и один с дополнительным элементом 123, на который указывает только z.До оператора lappend существовала только одна копия списка, и все три переменные указывали на него.