Tcl--Proc(procedure 的简称)
TCL支持过程的定义和调用,在TCL中,过程可看作是用TCL脚本实现的命令,效果与TCL的固有命令相似。
TCL中的过程类似于C中的函数。
% proc add {x y}{expr $x+$y}
参数一:add 过程名
参数二:{x y} 过程的参数列表,参数之间用空格隔开。
参数三:{expr $x+$y} TCL脚本,过程体。
在定义过程时,可以利用return命令返回你想要的值。return命令迅速中断过程,并把它的参数作为过程的结果。
% proc abs {x} {
if {$x >= 0} { return $x }
return [expr -$x]
}
当一个过程被调用时,这个过程的返回值就是return命令返回的值,如果过程没有使用return命令,过程的返回值就是过程中最后一个命令的执行结果。
如果发生错误,过程就直接返回这个错误。
TCL提供三种参数形式:
1) 没有参数
% proc add {} {
expr 3+5
}
% add
8
2) 带有缺省值的参数
可以定义具有缺省参数值的过程,我们可以为过程的部分或全部参数提供缺省值,如果调用过程时未提供那些参数的值,那么过程会自动使用缺省值赋给相应的参数。
注意:有缺省值的参数只能位于参数列表的后部,即在第一个具有缺省值的参数后面的所有参数,都只能是具有缺省值的参数。
3)TCL过程还支持可变个数的参数,如果过程的最后一个参数是args,就表示这个过程支持可变个数的参数.
位于args之前的参数象普通参数一样处理,任何附加的参数都需要在过程体中做特殊处理,过程的局部变量args将会被设置成一个列表。其元素就是所有附加的变量。如果没有附加的变量,args就设置成一个空串。