The local command creates an [incr Tcl] object that is local to the current call frame. When the call frame goes away, the object is automatically deleted. This command is useful for creating objects that are local to a procedure.
As a side effect, this command creates a variable named "itcl-local-xxx", where xxx is the name of the object that is created. This variable detects when the call frame is destroyed and automatically deletes the associated object.
itcl::class counter { private variable count 0 constructor {} { puts "created: $this" } destructor { puts "deleted: $this" } method bump {{by 1}} { incr count $by } method get {} { return $count } } proc test {val} { local counter x for {set i 0} {$i < $val} {incr i} { x bump } return [x get] } set result [test 5] puts "test: $result" set result [test 10] puts "test: $result" puts "objects: [itcl::find objects *]"