81 lines
3.7 KiB
Plaintext
81 lines
3.7 KiB
Plaintext
'\"
|
|
'\" Copyright (c) 1993 The Regents of the University of California.
|
|
'\" All rights reserved.
|
|
'\"
|
|
'\" Permission is hereby granted, without written agreement and without
|
|
'\" license or royalty fees, to use, copy, modify, and distribute this
|
|
'\" documentation for any purpose, provided that the above copyright
|
|
'\" notice and the following two paragraphs appear in all copies.
|
|
'\"
|
|
'\" IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
|
|
'\" FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
|
|
'\" ARISING OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
|
|
'\" CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
'\"
|
|
'\" THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
|
|
'\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
'\" AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
|
|
'\" ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
|
|
'\" PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
|
'\"
|
|
'\" $Header: /user6/ouster/tcl/man/RCS/proc.n,v 1.1 93/05/10 17:10:18 ouster Exp $ SPRITE (Berkeley)
|
|
'\"
|
|
.so man.macros
|
|
.HS proc tcl
|
|
.BS
|
|
'\" Note: do not modify the .SH NAME line immediately below!
|
|
.SH NAME
|
|
proc \- Create a Tcl procedure
|
|
.SH SYNOPSIS
|
|
\fBproc \fIname args body\fR
|
|
.BE
|
|
|
|
.SH DESCRIPTION
|
|
.PP
|
|
The \fBproc\fR command creates a new Tcl procedure named
|
|
\fIname\fR, replacing
|
|
any existing command or procedure there may have been by that name.
|
|
Whenever the new command is invoked, the contents of \fIbody\fR will
|
|
be executed by the Tcl interpreter.
|
|
\fIArgs\fR specifies the formal arguments to the
|
|
procedure. It consists of a list, possibly empty, each of whose
|
|
elements specifies
|
|
one argument. Each argument specifier is also a list with either
|
|
one or two fields. If there is only a single field in the specifier
|
|
then it is the name of the argument; if there are two fields, then
|
|
the first is the argument name and the second is its default value.
|
|
.PP
|
|
When \fIname\fR is invoked a local variable
|
|
will be created for each of the formal arguments to the procedure; its
|
|
value will be the value of corresponding argument in the invoking command
|
|
or the argument's default value.
|
|
Arguments with default values need not be
|
|
specified in a procedure invocation. However, there must be enough
|
|
actual arguments for all the
|
|
formal arguments that don't have defaults, and there must not be any extra
|
|
actual arguments. There is one special case to permit procedures with
|
|
variable numbers of arguments. If the last formal argument has the name
|
|
\fBargs\fR, then a call to the procedure may contain more actual arguments
|
|
than the procedure has formals. In this case, all of the actual arguments
|
|
starting at the one that would be assigned to \fBargs\fR are combined into
|
|
a list (as if the \fBlist\fR command had been used); this combined value
|
|
is assigned to the local variable \fBargs\fR.
|
|
.PP
|
|
When \fIbody\fR is being executed, variable names normally refer to
|
|
local variables, which are created automatically when referenced and
|
|
deleted when the procedure returns. One local variable is automatically
|
|
created for each of the procedure's arguments.
|
|
Global variables can only be accessed by invoking
|
|
the \fBglobal\fR command or the \fBupvar\fR command.
|
|
.PP
|
|
The \fBproc\fR command returns an empty string. When a procedure is
|
|
invoked, the procedure's return value is the value specified in a
|
|
\fBreturn\fR command. If the procedure doesn't execute an explicit
|
|
\fBreturn\fR, then its return value is the value of the last command
|
|
executed in the procedure's body.
|
|
If an error occurs while executing the procedure
|
|
body, then the procedure-as-a-whole will return that same error.
|
|
|
|
.SH KEYWORDS
|
|
argument, procedure
|