Tcl7.6 User Commands Man Page -- @scope (n)
Table of Contents


NAME

@scope - prefix for scoped values

SYNOPSIS

@scope namespace varName
@scope namespace command ?arg arg ...?

DESCRIPTION

Any command or variable name starting with @scope is treated as a scoped value. The associated namespace is activated before the command is executed or the variable is accessed.

With namespaces, commands and variables are no longer simple strings; they are names with an associated context. Scoped values capture the namespace context of a command/variable in a form that can be passed around at the Tcl language level. They are usually created by wrapping code fragments with the code command, and variable names with the scope command. They are rarely generated by hand.

Any variable name starting with @scope is automatically recognized as a global variable in the specified namespace. Access is allowed from any namespace, even if the variable is protected or private. Scoped variables can be used anywhere that an ordinary variable name is recognized. For example, the following statements are allowed:

namespace foo {
variable mode "1"
}
set {@scope ::foo mode} 3
puts "value = ${@scope ::foo mode}"

Any command name starting with @scope is automatically executed in the specified namespace. If additional arg arguments are included, the command string is built by appending the extra arg as list elements to the end of the command string. This preserves the integrity of the arguments, while keeping the code fragment command as a flat string. For example:

@scope ::foo {.b configure} -text "Hello World!"

is equivalent to:

namespace ::foo {.b configure -text {Hello World!}}

Since scoped commands are executed in their namespace context, they provide a way to access protected and private commands from any other namespace. In effect, the @scope command is a lot like the namespace command, but it allows extra arguments to be appended to the command.

KEYWORDS

@scope, code, scope, namespace, private, protected, public


Table of Contents