Provided by: tcl-itcl4-doc_4.1.2-1_all bug


       itcl::scope - capture the namespace context for a variable


       itcl::scope name


       Creates a scoped value for the specified name, which must be a variable name.  If the name
       is an instance variable, then the scope command returns a name which will resolve  in  any
       context  as  an instance variable belonging to object.  The precise format of this name is
       an internal detail to Itcl.  Use of such a scoped value makes it possible to use  instance
       variables  in conjunction with widgets.  For example, if you have an object with a private
       variable x, and you can use x in conjunction with the -textvariable  option  of  an  entry
       widget.  Before itcl3.0, only common variables could be used in this manner.

       If  the  name  is  not an instance variable, then it must be a common variable or a global
       variable.  In that case, the scope  command  returns  the  fully  qualified  name  of  the
       variable, e.g., ::foo::bar::x.

       If the name is not recognized as a variable, the scope command returns an error.

       Ordinary  variable  names  refer  to  variables  in  the global namespace.  A scoped value
       captures a variable name together with its namespace context in a way that allows it to be
       referenced properly later.  It is needed, for example, to wrap up variable names when a Tk
       widget is used within a namespace:
              namespace foo {
                  private variable mode 1

                  radiobutton .rb1 -text "Mode #1"         -variable [scope mode] -value 1
                  pack .rb1

                  radiobutton .rb2 -text "Mode #2"         -variable [scope mode] -value 2
                  pack .rb2
       Radiobuttons .rb1 and .rb2 interact via the variable "mode"  contained  in  the  namespace
       "foo".   The  scope command guarantees this by returning the fully qualified variable name

       You should never attempt to craft your own scoped variable  names,  even  if  you  believe
       you've  flawlessly  reverse-engineered  the  encoding.  Instead, you should always use the
       scope command to generate the variable name dynamically.  Then, you can pass that name  to
       a widget or to any other bit of code in your program.


       code, namespace, variable