发表于:2010-02-25 18:54:18
楼主
对于在过程中定义的变量,因为它们只能在过程中被访问,并且当过程退出时会被自动删除,所以称为局部变量;在所有过程之外定义的变量我们称之为全局变量。TCL中,局部变量和全局变量可以同名,两者的作用域的交集为空:局部变量的作用域是它所在的过程的内部;全局变量的作用域则不包括所有过程的内部。这一点和C语言有很大的不同.
如果我们想在过程内部引用一个全局变量的值,可以使用global命令。例如:
% set a 4
4
% proc sample { x } {
global a
incr a
return 【expr $a+$x】
}
% sample 3
8
%set a
5
全局变量a在过程中被访问。在过程中对a的改变会直接反映到全局上。如果去掉语句global a,TCL会出错,因为它不认识变量a。