Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
proc(3tcl)		     Tcl Built-In Commands		    proc(3tcl)


       proc - Create a Tcl procedure

       proc name args body

       The  proc command creates a new Tcl procedure named name, replacing any
       existing	command	or procedure there may have been by that name.	 When-
       ever  the new command is	invoked, the contents of body will be executed
       by the Tcl interpreter.	Normally, name is unqualified  (does  not  in-
       clude the names of any containing namespaces), and the new procedure is
       created in the current namespace.  If name includes any namespace qual-
       ifiers,	the  procedure	is  created  in	the specified namespace.  Args
       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.  Arguments with default val-
       ues that	are followed by	non-defaulted arguments	become required	 argu-
       ments.  In 8.6 this will	be considered an error.

       When  name  is invoked a	local variable will be created for each	of the
       formal arguments	to the procedure; its value will be the	value of  cor-
       responding  argument  in	the invoking command or	the argument's default
       value.  Actual arguments	are assigned to	formal arguments  strictly  in
       order.  Arguments with default values need not be specified in a	proce-
       dure invocation.	 However, there	must be	enough	actual	arguments  for
       all  the	formal arguments that do not have defaults, and	there must not
       be any extra actual arguments.  Arguments with default values that  are
       followed	 by  non-defaulted arguments become required arguments (in 8.6
       it will be considered an	error).	 There is one special case  to	permit
       procedures  with	variable numbers of arguments.	If the last formal ar-
       gument has the name args, 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 args
       are  combined  into a list (as if the list command had been used); this
       combined	value is assigned to the local variable	args.

       When body 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  cre-
       ated  for  each of the procedure's arguments.  Other variables can only
       be accessed by invoking one of the global, variable, upvar or namespace
       upvar commands.

       The proc	command	returns	an empty string.  When a procedure is invoked,
       the procedure's return value is the value specified in  a  return  com-
       mand.   If  the procedure does not execute an explicit return, then its
       return value is the value of the	last command executed  in  the	proce-
       dure's  body.   If  an error occurs while executing the procedure body,
       then the	procedure-as-a-whole will return that same error.

       This is a procedure that	accepts	arbitrarily many arguments and	prints
       them out, one by	one.
	      proc printArguments args {
		 foreach arg $args {
		    puts $arg

       This procedure is a bit like the	incr command, except it	multiplies the
       contents	of the named variable by the value, which defaults to 2:
	      proc mult	{varName {multiplier 2}} {
		 upvar 1 $varName var
		 set var [expr {$var * $multiplier}]

       info(3tcl), unknown(3tcl)

       argument, procedure

Tcl								    proc(3tcl)


Want to link to this manual page? Use this URL:

home | help