diff options
Diffstat (limited to 'doc/set.n')
| -rw-r--r-- | doc/set.n | 68 |
1 files changed, 46 insertions, 22 deletions
@@ -5,10 +5,8 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: set.n,v 1.3 2000/09/07 14:27:51 poenitz Exp $ -'\" -.so man.macros .TH set n "" Tcl "Tcl Built-In Commands" +.so man.macros .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME @@ -16,36 +14,62 @@ set \- Read and write variables .SH SYNOPSIS \fBset \fIvarName \fR?\fIvalue\fR? .BE - .SH DESCRIPTION .PP Returns the value of variable \fIvarName\fR. If \fIvalue\fR is specified, then set the value of \fIvarName\fR to \fIvalue\fR, creating a new variable -if one doesn't already exist, and return its value. +if one does not already exist, and return its value. If \fIvarName\fR contains an open parenthesis and ends with a close parenthesis, then it refers to an array element: the characters before the first open parenthesis are the name of the array, and the characters between the parentheses are the index within the array. Otherwise \fIvarName\fR refers to a scalar variable. -Normally, \fIvarName\fR is unqualified -(does not include the names of any containing namespaces), -and the variable of that name in the current namespace is read or written. +.PP If \fIvarName\fR includes namespace qualifiers -(in the array name if it refers to an array element), -the variable in the specified namespace is read or written. -.PP -If no procedure is active, -then \fIvarName\fR refers to a namespace variable -(global variable if the current namespace is the global namespace). -If a procedure is active, then \fIvarName\fR refers to a parameter -or local variable of the procedure unless the \fBglobal\fR command -was invoked to declare \fIvarName\fR to be global, -or unless a \fBvariable\fR command -was invoked to declare \fIvarName\fR to be a namespace variable. - +(in the array name if it refers to an array element), or if \fIvarName\fR +is unqualified (does not include the names of any containing namespaces) +but no procedure is active, +\fIvarName\fR refers to a namespace variable +resolved according to the rules described under \fBNAME RESOLUTION\fR in +the \fBnamespace\fR manual page. +.PP +If a procedure is active and \fIvarName\fR is unqualified, then +\fIvarName\fR refers to a parameter or local variable of the procedure, +unless \fIvarName\fR was declared to resolve differently through one of the +\fBglobal\fR, \fBvariable\fR or \fBupvar\fR commands. +.SH EXAMPLES +.PP +Store a random number in the variable \fIr\fR: +.PP +.CS +\fBset\fR r [expr {rand()}] +.CE +.PP +Store a short message in an array element: +.PP +.CS +\fBset\fR anAry(msg) "Hello, World!" +.CE +.PP +Store a short message in an array element specified by a variable: +.PP +.CS +\fBset\fR elemName "msg" +\fBset\fR anAry($elemName) "Hello, World!" +.CE +.PP +Copy a value into the variable \fIout\fR from a variable whose name is +stored in the \fIvbl\fR (note that it is often easier to use arrays in +practice instead of doing double-dereferencing): +.PP +.CS +\fBset\fR in0 "small random" +\fBset\fR in1 "large random" +\fBset\fR vbl in[expr {rand() >= 0.5}] +\fBset\fR out [\fBset\fR $vbl] +.CE .SH "SEE ALSO" -expr(n), proc(n), trace(n), unset(n) - +expr(n), global(n), namespace(n), proc(n), trace(n), unset(n), upvar(n), variable(n) .SH KEYWORDS read, write, variable |
