NAME
scope - capture the namespace context for a variable
SYNOPSIS
scope name
_________________________________________________________________
DESCRIPTION
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 string of the following
form:
@itcl object varName
This is recognized in any context as an instance variable
belonging to object. So with itcl3.0 and beyond, it is
possible to use instance variables in conjunction with
widgets. For example, if you have an object with a pri
vate 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 com
mand guarantees this by returning the fully qualified
variable name ::foo::mode.
You should never use the @itcl syntax directly. For exam
ple, it is a bad idea to write code like this:
puts "value = ${@itcl ::fred x}"
Instead, you should always use the scope command to gener
ate the variable name dynamically. Then, you can pass
that name to a widget or to any other bit of code in your
program.
KEYWORDS
code, namespace, variable
Man(1) output converted with
man2html