proc(3tcl) Tcl Built-In Commands proc(3tcl)

proc - 建立一个 Tcl 过程

proc name args body

proc 命令建立一个叫做name 的新的 Tcl 过程,替换已经叫这个名字的任何现存的命令或过程。 当调用这个新命令的时候,Tcl 解释器将执行 body 的内容。通常,name 是未限定的(unqualified)(不包括任何包含(这个过程)的名字空间的名字),在当前名字空间中建立这个新过程。如果 name 包含任何名字空间限定符(qualifier),则在指定的名字空间中建立这个过程。Args 指定给这个过程的形式参数。它由一个列表组成,可以为空,它的每个元素指定一个参数。每个参数指定符(specifier)也可以是有一个或两个字段(field)的一个列表。如果在指定符中只有一个单一字段则它是参数的名字;如果有两个字段,则第一个是参数名而第二个是它的缺省值。

在调用 name 时,为过程的每个形式参数建立一个局部变量;它的值将是在调用命令中相应的(实际)参数的值或这个参数的缺省值。在过程调用中可以不指定有缺省值的参数。但是,必须有足够的实际参数给所有没有缺省值的形式参数,并且没有多余的实际参数。有一种特殊情况可以允许过程有可变数目的参数。如果最后的形式参数的名字是 args,则到这个过程的一个调用包含的实际参数可以多于过程拥有的形式参数。此时,把开始于应当被赋给 args 的那个实际参数的所有实际参数组合成一个列表(有如使用了 list 命令);把这个组合后的值赋给局部变量 args

在执行 body 的时候,变量名一般引用局部变量,在被引用时自动建立它们,在过程退出时(自动)删除它们。为过程的每个参数自动的建立一个局部变量。只能通过调用 global 命令或 upvar 命令来访问全局变量。只能通过调用 variable 命令或 upvar 命令来访问名字空间变量。

proc 命令返回一个空串。在调用一个过程的时候,在一个 return 命令中指定这个过程的返回值。如果过程不执行一个显式的return 命令,则它的返回值是在过程体中执行的最后一条命令的值。如果在执行过程体期间发生了一个错误,则作为一个整体的过程将返回相同的错误。

info(n), unknown(n)

argument, procedure

寒蝉退士

2001/10/17

http://cmpp.linuxforum.net

本页面中文版由中文 man 手册页计划提供。
中文 man 手册页计划:https://github.com/man-pages-zh/manpages-zh
Tcl