proc.n
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:4k
源码类别:

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1993 The Regents of the University of California.
  3. '" Copyright (c) 1994-1996 Sun Microsystems, Inc.
  4. '"
  5. '" See the file "license.terms" for information on usage and redistribution
  6. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  7. '" 
  8. '" RCS: @(#) $Id: proc.n,v 1.3.18.1 2004/10/27 14:23:57 dkf Exp $
  9. '" 
  10. .so man.macros
  11. .TH proc n "" Tcl "Tcl Built-In Commands"
  12. .BS
  13. '" Note:  do not modify the .SH NAME line immediately below!
  14. .SH NAME
  15. proc - Create a Tcl procedure
  16. .SH SYNOPSIS
  17. fBproc fIname args bodyfR
  18. .BE
  19. .SH DESCRIPTION
  20. .PP
  21. The fBprocfR command creates a new Tcl procedure named
  22. fInamefR, replacing
  23. any existing command or procedure there may have been by that name.
  24. Whenever the new command is invoked, the contents of fIbodyfR will
  25. be executed by the Tcl interpreter.
  26. Normally, fInamefR is unqualified
  27. (does not include the names of any containing namespaces),
  28. and the new procedure is created in the current namespace.
  29. If fInamefR includes any namespace qualifiers,
  30. the procedure is created in the specified namespace.
  31. fIArgsfR specifies the formal arguments to the
  32. procedure.  It consists of a list, possibly empty, each of whose
  33. elements specifies
  34. one argument.  Each argument specifier is also a list with either
  35. one or two fields.  If there is only a single field in the specifier
  36. then it is the name of the argument; if there are two fields, then
  37. the first is the argument name and the second is its default value.
  38. .PP
  39. When fInamefR is invoked a local variable
  40. will be created for each of the formal arguments to the procedure; its
  41. value will be the value of corresponding argument in the invoking command
  42. or the argument's default value.
  43. Arguments with default values need not be
  44. specified in a procedure invocation.  However, there must be enough
  45. actual arguments for all the
  46. formal arguments that don't have defaults, and there must not be any extra
  47. actual arguments.  There is one special case to permit procedures with
  48. variable numbers of arguments.  If the last formal argument has the name
  49. fBargsfR, then a call to the procedure may contain more actual arguments
  50. than the procedure has formals.  In this case, all of the actual arguments
  51. starting at the one that would be assigned to fBargsfR are combined into
  52. a list (as if the fBlistfR command had been used); this combined value
  53. is assigned to the local variable fBargsfR.
  54. .PP
  55. When fIbodyfR is being executed, variable names normally refer to
  56. local variables, which are created automatically when referenced and
  57. deleted when the procedure returns.  One local variable is automatically
  58. created for each of the procedure's arguments.
  59. Global variables can only be accessed by invoking
  60. the fBglobalfR command or the fBupvarfR command.
  61. Namespace variables can only be accessed by invoking
  62. the fBvariablefR command or the fBupvarfR command.
  63. .PP
  64. The fBprocfR command returns an empty string.  When a procedure is
  65. invoked, the procedure's return value is the value specified in a
  66. fBreturnfR command.  If the procedure doesn't execute an explicit
  67. fBreturnfR, then its return value is the value of the last command
  68. executed in the procedure's body.
  69. If an error occurs while executing the procedure
  70. body, then the procedure-as-a-whole will return that same error.
  71. .SH EXAMPLES
  72. This is a procedure that accepts arbitrarily many arguments and prints
  73. them out, one by one.
  74. .CS
  75. fBprocfR printArguments args {
  76.    foreach arg $args {
  77.       puts $arg
  78.    }
  79. }
  80. .CE
  81. .PP
  82. This procedure is a bit like the fBincrfR command, except it
  83. multiplies the contents of the named variable by the value, which
  84. defaults to fB2fR:
  85. .CS
  86. fBprocfR mult {varName {multiplier 2}} {
  87.    upvar 1 $varName var
  88.    set var [expr {$var * $multiplier}]
  89. }
  90. .CE
  91. .SH "SEE ALSO"
  92. info(n), unknown(n)
  93. .SH KEYWORDS
  94. argument, procedure