67 lines
3.7 KiB
HTML
67 lines
3.7 KiB
HTML
|
<HTML><HEAD><TITLE>Built-In Commands - proc manual page</TITLE></HEAD><BODY>
|
||
|
<H3><A NAME="M2">NAME</A></H3>
|
||
|
proc - Create a Tcl procedure
|
||
|
<H3><A NAME="M3">SYNOPSIS</A></H3>
|
||
|
<B>proc </B><I>name args body</I><BR>
|
||
|
<H3><A NAME="M4">DESCRIPTION</A></H3>
|
||
|
The <B>proc</B> command creates a new Tcl procedure named
|
||
|
<I>name</I>, replacing
|
||
|
any existing command or procedure there may have been by that name.
|
||
|
Whenever the new command is invoked, the contents of <I>body</I> will
|
||
|
be executed by the Tcl interpreter.
|
||
|
Normally, <I>name</I> is unqualified
|
||
|
(does not include the names of any containing namespaces),
|
||
|
and the new procedure is created in the current namespace.
|
||
|
If <I>name</I> includes any namespace qualifiers,
|
||
|
the procedure is created in the specified namespace.
|
||
|
<I>Args</I> 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.
|
||
|
<P>
|
||
|
When <I>name</I> 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
|
||
|
<B>args</B>, 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 <B>args</B> are combined into
|
||
|
a list (as if the <B><A HREF="../TkCmd/list.htm">list</A></B> command had been used); this combined value
|
||
|
is assigned to the local variable <B>args</B>.
|
||
|
<P>
|
||
|
When <I>body</I> 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 <B><A HREF="../TkCmd/global.htm">global</A></B> command or the <B><A HREF="../TkCmd/upvar.htm">upvar</A></B> command.
|
||
|
Namespace variables can only be accessed by invoking
|
||
|
the <B><A HREF="../TkCmd/variable.htm">variable</A></B> command or the <B><A HREF="../TkCmd/upvar.htm">upvar</A></B> command.
|
||
|
<P>
|
||
|
The <B>proc</B> command returns an empty string. When a procedure is
|
||
|
invoked, the procedure's return value is the value specified in a
|
||
|
<B><A HREF="../TkCmd/return.htm">return</A></B> command. If the procedure doesn't execute an explicit
|
||
|
<B><A HREF="../TkCmd/return.htm">return</A></B>, 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.
|
||
|
|
||
|
<H3><A NAME="M5">SEE ALSO</A></H3>
|
||
|
<B><A HREF="../TkCmd/info.htm">info</A></B>, <B><A HREF="../TkCmd/unknown.htm">unknown</A></B>
|
||
|
<H3><A NAME="M6">KEYWORDS</A></H3>
|
||
|
<A href="../Keywords/A.htm#argument">argument</A>, <A href="../Keywords/P.htm#procedure">procedure</A>
|
||
|
<HR><PRE>
|
||
|
<A HREF="../copyright.htm">Copyright</A> © 1993 The Regents of the University of California.
|
||
|
<A HREF="../copyright.htm">Copyright</A> © 1994-1996 Sun Microsystems, Inc.
|
||
|
<A HREF="../copyright.htm">Copyright</A> © 1995-1997 Roger E. Critchlow Jr.</PRE>
|
||
|
</BODY></HTML>
|