itcl User Commands - local






NAME

     local - create an object local to a procedure


SYNOPSIS

     local className objName ?arg arg ...?





DESCRIPTION

     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.



EXAMPLE

     In the following example, a simple "counter" object is  used
     within  the  procedure  "test".  The counter is created as a
     local object, so it is automatically deleted each  time  the
     procedure  exits.   The  puts  statements  included  in  the
     constructor/destructor show the object coming and  going  as
     the procedure is called.

         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: [info objects]"




KEYWORDS

     class, object, procedure