Imported upstream version 1.5
[manpages-zh.git] / src / mann / proc.n
blobd7c8ea1e575ee7342353527f680cd7931b72243b
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.2 2003/11/24 05:09:59 bbbush Exp $
9 '\"
10 '\" The definitions below are for supplemental macros used in Tcl/Tk
11 '\" manual entries.
12 '\"
13 '\" .AP type name in/out ?indent?
14 '\" Start paragraph describing an argument to a library procedure.
15 '\" type is type of argument (int, etc.), in/out is either "in", "out",
16 '\" or "in/out" to describe whether procedure reads or modifies arg,
17 '\" and indent is equivalent to second arg of .IP (shouldn't ever be
18 '\" needed; use .AS below instead)
19 '\"
20 '\" .AS ?type? ?name?
21 '\" Give maximum sizes of arguments for setting tab stops. Type and
22 '\" name are examples of largest possible arguments that will be passed
23 '\" to .AP later. If args are omitted, default tab stops are used.
24 '\"
25 '\" .BS
26 '\" Start box enclosure. From here until next .BE, everything will be
27 '\" enclosed in one large box.
28 '\"
29 '\" .BE
30 '\" End of box enclosure.
31 '\"
32 '\" .CS
33 '\" Begin code excerpt.
34 '\"
35 '\" .CE
36 '\" End code excerpt.
37 '\"
38 '\" .VS ?version? ?br?
39 '\" Begin vertical sidebar, for use in marking newly-changed parts
40 '\" of man pages. The first argument is ignored and used for recording
41 '\" the version when the .VS was added, so that the sidebars can be
42 '\" found and removed when they reach a certain age. If another argument
43 '\" is present, then a line break is forced before starting the sidebar.
44 '\"
45 '\" .VE
46 '\" End of vertical sidebar.
47 '\"
48 '\" .DS
49 '\" Begin an indented unfilled display.
50 '\"
51 '\" .DE
52 '\" End of indented unfilled display.
53 '\"
54 '\" .SO
55 '\" Start of list of standard options for a Tk widget. The
56 '\" options follow on successive lines, in four columns separated
57 '\" by tabs.
58 '\"
59 '\" .SE
60 '\" End of list of standard options for a Tk widget.
61 '\"
62 '\" .OP cmdName dbName dbClass
63 '\" Start of description of a specific option. cmdName gives the
64 '\" option's name as specified in the class command, dbName gives
65 '\" the option's name in the option database, and dbClass gives
66 '\" the option's class in the option database.
67 '\"
68 '\" .UL arg1 arg2
69 '\" Print arg1 underlined, then print arg2 normally.
70 '\"
71 '\" RCS: @(#) $Id: proc.n,v 1.2 2003/11/24 05:09:59 bbbush Exp $
72 '\"
73 '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
74 .if t .wh -1.3i ^B
75 .nr ^l \n(.l
76 .ad b
77 '\" # Start an argument description
78 .de AP
79 .ie !"\\$4"" .TP \\$4
80 .el \{\
81 . ie !"\\$2"" .TP \\n()Cu
82 . el .TP 15
83 .\}
84 .ta \\n()Au \\n()Bu
85 .ie !"\\$3"" \{\
86 \&\\$1 \\fI\\$2\\fP (\\$3)
87 .\".b
88 .\}
89 .el \{\
90 .br
91 .ie !"\\$2"" \{\
92 \&\\$1 \\fI\\$2\\fP
93 .\}
94 .el \{\
95 \&\\fI\\$1\\fP
96 .\}
97 .\}
99 '\" # define tabbing values for .AP
100 .de AS
101 .nr )A 10n
102 .if !"\\$1"" .nr )A \\w'\\$1'u+3n
103 .nr )B \\n()Au+15n
105 .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
106 .nr )C \\n()Bu+\\w'(in/out)'u+2n
108 .AS Tcl_Interp Tcl_CreateInterp in/out
109 '\" # BS - start boxed text
110 '\" # ^y = starting y location
111 '\" # ^b = 1
112 .de BS
114 .mk ^y
115 .nr ^b 1u
116 .if n .nf
117 .if n .ti 0
118 .if n \l'\\n(.lu\(ul'
119 .if n .fi
121 '\" # BE - end boxed text (draw box now)
122 .de BE
124 .ti 0
125 .mk ^t
126 .ie n \l'\\n(^lu\(ul'
127 .el \{\
128 .\" Draw four-sided box normally, but don't draw top of
129 .\" box if the box started on an earlier page.
130 .ie !\\n(^b-1 \{\
131 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
133 .el \}\
134 \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
139 .nr ^b 0
141 '\" # VS - start vertical sidebar
142 '\" # ^Y = starting y location
143 '\" # ^v = 1 (for troff; for nroff this doesn't matter)
144 .de VS
145 .if !"\\$2"" .br
146 .mk ^Y
147 .ie n 'mc \s12\(br\s0
148 .el .nr ^v 1u
150 '\" # VE - end of vertical sidebar
151 .de VE
152 .ie n 'mc
153 .el \{\
154 .ev 2
156 .ti 0
157 .mk ^t
158 \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
159 .sp -1
163 .nr ^v 0
165 '\" # Special macro to handle page bottom: finish off current
166 '\" # box/sidebar if in box/sidebar mode, then invoked standard
167 '\" # page bottom macro.
168 .de ^B
169 .ev 2
170 'ti 0
172 .mk ^t
173 .if \\n(^b \{\
174 .\" Draw three-sided box if this is the box's first page,
175 .\" draw two sides but no top otherwise.
176 .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
177 .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
179 .if \\n(^v \{\
180 .nr ^x \\n(^tu+1v-\\n(^Yu
181 \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
186 .if \\n(^b \{\
187 .mk ^y
188 .nr ^b 2
190 .if \\n(^v \{\
191 .mk ^Y
194 '\" # DS - begin display
195 .de DS
200 '\" # DE - end display
201 .de DE
206 '\" # SO - start of list of standard options
207 .de SO
208 .SH "STANDARD OPTIONS"
211 .ta 5.5c 11c
212 .ft B
214 '\" # SE - end of list of standard options
215 .de SE
217 .ft R
219 See the \\fBoptions\\fR manual entry for details on the standard options.
221 '\" # OP - start of full description for a single option
222 .de OP
225 .ta 4c
226 Command-Line Name: \\fB\\$1\\fR
227 Database Name: \\fB\\$2\\fR
228 Database Class: \\fB\\$3\\fR
232 '\" # CS - begin code excerpt
233 .de CS
236 .ta .25i .5i .75i 1i
238 '\" # CE - end code excerpt
239 .de CE
243 .de UL
244 \\$1\l'|0\(ul'\\$2
246 .TH proc n "" Tcl "Tcl Built-In Commands"
248 '\" Note: do not modify the .SH NAME line immediately below!
249 .SH NAME
250 proc \- 建立一个 Tcl 过程
251 .SH "总览 SYNOPSIS"
252 \fBproc \fIname args body\fR
255 .SH "描述 DESCRIPTION"
257 \fBproc\fR 命令建立一个叫做\fIname \fR的新的 Tcl 过程,替换已经叫这个名字的任何现存的命令或过程。 当调用这个新命令的时候,Tcl 解释器将执行 \fIbody\fR 的内容。通常,\fIname\fR 是未限定的(unqualified)(不包括任何包含(这个过程)的名字空间的名字),在当前名字空间中建立这个新过程。如果 \fIname\fR 包含任何名字空间限定符(qualifier),则在指定的名字空间中建立这个过程。\fIArgs\fR 指定给这个过程的形式参数。它由一个列表组成,可以为空,它的每个元素指定一个参数。每个参数指定符(specifier)也可以是有一个或两个字段(field)的一个列表。如果在指定符中只有一个单一字段则它是参数的名字;如果有两个字段,则第一个是参数名而第二个是它的缺省值。
259 在调用 \fIname\fR 时,为过程的每个形式参数建立一个局部变量;它的值将是在调用命令中相应的(实际)参数的值或这个参数的缺省值。在过程调用中可以不指定有缺省值的参数。但是,必须有足够的实际参数给所有没有缺省值的形式参数,并且没有多余的实际参数。有一种特殊情况可以允许过程有可变数目的参数。如果最后的形式参数的名字是 \fBargs\fR,则到这个过程的一个调用包含的实际参数可以多于过程拥有的形式参数。此时,把开始于应当被赋给 \fBargs \fR的那个实际参数的所有实际参数组合成一个列表(有如使用了 \fBlist\fR 命令);把这个组合后的值赋给局部变量 \fBargs\fR。
261 在执行 \fIbody\fR 的时候,变量名一般引用局部变量,在被引用时自动建立它们,在过程退出时(自动)删除它们。为过程的每个参数自动的建立一个局部变量。只能通过调用 \fBglobal\fR 命令或 \fBupvar\fR 命令来访问全局变量。只能通过调用 \fBvariable\fR 命令或 \fBupvar\fR 命令来访问名字空间变量。
263 \fBproc\fR 命令返回一个空串。在调用一个过程的时候,在一个 \fBreturn\fR 命令中指定这个过程的返回值。如果过程不执行一个显式的\fBreturn \fR命令,则它的返回值是在过程体中执行的最后一条命令的值。如果在执行过程体期间发生了一个错误,则作为一个整体的过程将返回相同的错误。
265 .SH "参见 SEE ALSO"
266 info(n), unknown(n)
268 .SH "关键字 KEYWORDS"
269 argument, procedure
271 .SH "[中文版维护人]"
272 .B 寒蝉退士
273 .SH "[中文版最新更新]"
274 .B 2001/10/17
275 .SH "《中国 Linux 论坛 man 手册页翻译计划》:"
276 .BI http://cmpp.linuxforum.net