Tcl-局部变量、全局变量、名字空间的变量用法举例
来源:互联网 发布:java语言特点 编辑:程序博客网 时间:2024/05/22 02:07
局部变量
局部变量在过程执行完毕返回时自动销毁,结束其生命周期。所以过程内定义的变量,在过程外无法访问。例如,下面例子中定义了过程add,调用过程add后,无法访问变量c,因为c是局部变量。
% proc add {a b} {
set c [expr $a+$b]
}
% add 3 4
7
% set c
can't read "c": no such variable
全局变量
特指全局名字空间(::)中的全局变量
举例如下
定义了全局变量c,赋值2;
% set c 2
2
定义过程add1,在过程中通过::c的方式使用了全局变量c;
% proc add1 {a b} {
set ::c [expr $a+$b]
return $::c
}
调用过程add1
% add1 3 4
7
之后查看全局变量c的值也随add1的调用改变。
% set c
7
另外一种在过程中调用全局变量的方法
% set c ;#c的初值为7
7
% proc add2 {a b} {
global c ;#引用全局变量c
set c [expr $a+$b+$c]
return $c
}
% add2 4 5 ;#调用过程add2
c
% set c ;#调用过程add2后,c的值变成16
16
名字空间的变量
也有全局和局部之分,与上面类似,只是名字空间不同。
举例如下
% set len 300
300
% set wid 100
100
% namespace eval cc {
variable len 30
variable wid 10
proc area {a b} {
variable len ;#引用名字空间cc的全局变量len和wid
variable wid
puts "$len,$wid\n" ;#输出名字空间cc的全局变量len和wid
set area [expr $a*$b]
return $area
}
}
% cc::area $len $wid ;#调用全局变量len和wid,注意与下面的差别
30,10
30000
% cc::area $cc::len $cc::wid ;#调用名字空间cc的全局变量cc::len和cc::wid
30,10
300
%
总结 global关联的是全局名字空间(::)中的全局变量,
varible关联的是命令所在名字空间的全局变量。
- Tcl-局部变量、全局变量、名字空间的变量用法举例
- 全局变量和局部变量的用法
- js的局部变量和全局变量的定义形式举例
- 全局变量,静态局部变量,局部变量空间的堆分配和栈分配
- 全局变量,静态局部变量,局部变量空间的堆分配和栈分配问题
- 全局变量、局部变量、静态全局变量、静态局部变量的区别
- 全局变量 局部变量 静态全局变量 静态局部变量的区别
- 全局变量、局部变量、静态全局变量、静态局部变量的区别
- 全局变量、局部变量、静态全局变量、静态局部变量的区别
- 局部变量、全局变量、静态局部变量、静态全局变量的异同
- 全局变量、局部变量、静态全局变量、静态局部变量的区别
- 全局变量、局部变量、静态全局变量、静态局部变量的区别
- 全局变量、局部变量、静态全局变量、静态局部变量的区别
- 全局变量、局部变量、静态全局变量、静态局部变量的区别
- 全局变量、局部变量、静态全局变量、静态局部变量的区别
- 全局变量、局部变量、静态全局变量、静态局部变量的区别
- 全局变量,局部变量,静态全局变量,静态局部变量的区别
- 全局变量、局部变量、静态全局变量、静态局部变量的区别
- jquery选择checked的问题
- java版经典算法排序汇总
- backlogs自定义task的状态
- UVA 10125 - Sumsets(POJ 2549) hash
- 计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接
- Tcl-局部变量、全局变量、名字空间的变量用法举例
- 0400000103
- javascript 就弄清楚这三个方面
- 0400000104
- MD5加密算法
- 0400000105
- window安装mysql(zip、noinstall)
- 了解pentaho,congonos 和hadoop
- 0400000106