命名空间,其实际是一系列变量和过程的合集,从而让TCL 解释器能够对这些变量和过程进行分类管理。
- # 声明如下
- namespace eval ns0 {
- proc print {} {
- puts "Tcl Proc 0"
- }
- proc add {a b} {
- return [expr {$a + $b}]
- }
- }
-
- namespace eval ns1 {
- proc print {} {
- puts "Tcl Proc1"
- }
- proc sub {a b} {
- return [expr {$a - $b}]
- }
- }
- # 调用如下
- # 该语句调用了ns0里的print过程
- ns0::print
- # 该语句进行了4+5的计算
- ns0:add 4 5
如果一个命名空间里的不同过程之间是有关联的,需要用到同一个变量时,就可以创建命名空间变量。
- namespace eval counter {
- variable cnt 0
- proc AddOne {} {
- variable cnt
- return [incr cnt]
- }
-
- proc SubOne {} {
- variable cnt
- return [incr cnt -1]
- }
-
- proc reset {} {
- variable cnt
- set cnt 0
- }
- }
- # 调用如下
- # 该语句调用了counter里的加一过程
- [counter::AddOne]
- # 该语句进行了counter里的减一过程
- [counter::SubOne]
- # 该语句进行了counter里的复位过程
- [counter::reset]