TCL自学笔记-14 定义命名空间
使用命名空间命令创建命名空间。一个简单的例子,创建命名空间如下图所示
namespace eval MyMath {
# Create a variable inside the namespace
variable myResult
}
# Create procedures inside the namespace
proc MyMath::Add {a b } {
set ::MyMath::myResult [expr $a + $b]
}
MyMath::Add 10 23
puts $::MyMath::myResult
当执行上面的代码,产生以下结果:
33
namespace eval MyMath {
variable myResult
}
proc MyMath::Add {a b } {
set ::MyMath::myResult [expr $a + $b]
}
MyMath::Add 10 23
puts $::MyMath::myResult
在上面的程序,可以看到有一个变量myResult和程序Add的一个命名空间。这使得创建变量和程序可根据相同的名称在不同的命名空间。
以上程序也可以用以下定义函数的方法实现。
proc Add {a b } {
return [expr $a + $b]
}
set c [Add 10 23]
puts $c
嵌套的命名空间
TCL允许命名空间的嵌套。一个简单的例子,嵌套的命名空间如下。
namespace eval extendedMath {
# Create a variable inside the namespace
namespace eval MyMath {
# Create a variable inside the namespace
variable myResult
}
}
set ::extendedMath::MyMath::myResult "test2"
puts $::extendedMath::MyMath::myResult