summaryrefslogtreecommitdiffstats
path: root/doc/variable.n
diff options
context:
space:
mode:
Diffstat (limited to 'doc/variable.n')
-rw-r--r--doc/variable.n55
1 files changed, 46 insertions, 9 deletions
diff --git a/doc/variable.n b/doc/variable.n
index 3b742a9..7d58a02 100644
--- a/doc/variable.n
+++ b/doc/variable.n
@@ -5,18 +5,17 @@
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\"
-'\" RCS: @(#) $Id: variable.n,v 1.2 1998/09/14 18:39:56 stanton Exp $
-'\"
-.so man.macros
.TH variable n 8.0 Tcl "Tcl Built-In Commands"
+.so man.macros
.BS
'\" Note: do not modify the .SH NAME line immediately below!
.SH NAME
variable \- create and initialize a namespace variable
.SH SYNOPSIS
-\fBvariable \fR?\fIname value...\fR? \fIname \fR?\fIvalue\fR?
+\fBvariable \fR\fIname\fR
+.sp
+\fBvariable \fR?\fIname value...\fR?
.BE
-
.SH DESCRIPTION
.PP
This command is normally used within a
@@ -36,11 +35,14 @@ Normally, \fIname\fR is unqualified
(does not include the names of any containing namespaces),
and the variable is created in the current namespace.
If \fIname\fR includes any namespace qualifiers,
-the variable is created in the specified namespace.
+the variable is created in the specified namespace. If the variable
+is not defined, it will be visible to the \fBnamespace which\fR
+command, but not to the \fBinfo exists\fR command.
.PP
If the \fBvariable\fR command is executed inside a Tcl procedure,
it creates local variables
-linked to the corresponding namespace variables.
+linked to the corresponding namespace variables (and therefore these
+variables are listed by \fBinfo vars\fR.)
In this way the \fBvariable\fR command resembles the \fBglobal\fR command,
although the \fBglobal\fR command
only links to variables in the global namespace.
@@ -55,9 +57,44 @@ and the initialization \fIvalue\fR should be left off.
After the variable has been declared,
elements within the array can be set using ordinary
\fBset\fR or \fBarray\fR commands.
+.SH EXAMPLES
+.PP
+Create a variable in a namespace:
+.PP
+.CS
+namespace eval foo {
+ \fBvariable\fR bar 12345
+}
+.CE
+.PP
+Create an array in a namespace:
+.PP
+.CS
+namespace eval someNS {
+ \fBvariable\fR someAry
+ array set someAry {
+ someName someValue
+ otherName otherValue
+ }
+}
+.CE
+.PP
+Access variables in namespaces from a procedure:
+.PP
+.CS
+namespace eval foo {
+ proc spong {} {
+ # Variable in this namespace
+ \fBvariable\fR bar
+ puts "bar is $bar"
+ # Variable in another namespace
+ \fBvariable\fR ::someNS::someAry
+ parray someAry
+ }
+}
+.CE
.SH "SEE ALSO"
-global(n), namespace(n)
-
+global(n), namespace(n), upvar(n)
.SH KEYWORDS
global, namespace, procedure, variable