tcl7.6 User Commands - scope
NAME
scope - capture the namespace context for a variable
SYNOPSIS
scope string
DESCRIPTION
Creates a scoped value for the specified string, which is
usually a variable name. A scoped value is a list with
three elements: the "@scope" keyword, a namespace context,
and the value string. For example, the command
namespace foo {
scope "x"
}
produces the scoped value:
@scope ::foo x
Note that the scope command captures the current namespace
context. If the string is itself a scoped value, then the
current context is ignored and the string is returned
directly.
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 guaran-
tees this by creating the variable name "@scope ::foo mode".
Scoped variables can be used anywhere that an ordinary vari-
able name is recognized. For example, the following
statements are allowed:
set {@scope ::foo mode} 3
puts "value = ${@scope ::foo mode}"
Note that scoped variables by-pass the usual protection
mechanisms; the name "@scope ::foo mode" can be used in any
namespace context to access the "foo::mode" variable, even
though it is private.
KEYWORDS
@scope, code, namespace, private, protected, public