命名空间,其实际是一系列变量和过程的合集,从而让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 0proc AddOne {} {variable cntreturn [incr cnt] }proc SubOne {} {variable cntreturn [incr cnt -1] }proc reset {} {variable cntset cnt 0 }
}
# 调用如下
# 该语句调用了counter里的加一过程
[counter::AddOne]
# 该语句进行了counter里的减一过程
[counter::SubOne]
# 该语句进行了counter里的复位过程
[counter::reset]