proc.n
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:4k
- '"
- '" Copyright (c) 1993 The Regents of the University of California.
- '" Copyright (c) 1994-1996 Sun Microsystems, Inc.
- '"
- '" See the file "license.terms" for information on usage and redistribution
- '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- '"
- '" RCS: @(#) $Id: proc.n,v 1.3.18.1 2004/10/27 14:23:57 dkf Exp $
- '"
- .so man.macros
- .TH proc n "" Tcl "Tcl Built-In Commands"
- .BS
- '" Note: do not modify the .SH NAME line immediately below!
- .SH NAME
- proc - Create a Tcl procedure
- .SH SYNOPSIS
- fBproc fIname args bodyfR
- .BE
- .SH DESCRIPTION
- .PP
- The fBprocfR command creates a new Tcl procedure named
- fInamefR, replacing
- any existing command or procedure there may have been by that name.
- Whenever the new command is invoked, the contents of fIbodyfR will
- be executed by the Tcl interpreter.
- Normally, fInamefR is unqualified
- (does not include the names of any containing namespaces),
- and the new procedure is created in the current namespace.
- If fInamefR includes any namespace qualifiers,
- the procedure is created in the specified namespace.
- fIArgsfR 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 fInamefR 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
- fBargsfR, 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 fBargsfR are combined into
- a list (as if the fBlistfR command had been used); this combined value
- is assigned to the local variable fBargsfR.
- .PP
- When fIbodyfR 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 fBglobalfR command or the fBupvarfR command.
- Namespace variables can only be accessed by invoking
- the fBvariablefR command or the fBupvarfR command.
- .PP
- The fBprocfR command returns an empty string. When a procedure is
- invoked, the procedure's return value is the value specified in a
- fBreturnfR command. If the procedure doesn't execute an explicit
- fBreturnfR, 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 EXAMPLES
- This is a procedure that accepts arbitrarily many arguments and prints
- them out, one by one.
- .CS
- fBprocfR printArguments args {
- foreach arg $args {
- puts $arg
- }
- }
- .CE
- .PP
- This procedure is a bit like the fBincrfR command, except it
- multiplies the contents of the named variable by the value, which
- defaults to fB2fR:
- .CS
- fBprocfR mult {varName {multiplier 2}} {
- upvar 1 $varName var
- set var [expr {$var * $multiplier}]
- }
- .CE
- .SH "SEE ALSO"
- info(n), unknown(n)
- .SH KEYWORDS
- argument, procedure