我正在做一个Tcl-Tk项目,并且有一些名称空间。但是主要部分(影响整个程序的主窗口和设置的部分)目前在全局命名空间中。我现在想知道全局命名空间中变量的最佳方式:
proc TestVariable {} {
global MyVar
variable MyVar
...
}
当TestVariable
在全局命名空间中时,两个变体将获得相同的结果。我说的对吗?如果是这种情况,那么使用哪种变体更好呢?
全局变量是全局命名空间中的命名空间变量。全局名称空间有点特殊,因为它是默认情况下其他名称空间中出现的地方;这就是你想要的命令(以及你真正的不想要的变量,这就是为什么你应该用variable
命令声明命名空间变量)。
一般来说,最好为属于整个应用程序的内容保留全局名称空间,并将适用性更有限的内容放在其他名称空间中。如果您正在编写库代码,绝对要将其放在名称空间中(通常与库包具有相同的名称)。
您应该限制自己使用大量全局变量。使用名称空间来定义变量总是一个好主意。
检查"http://tcl.tk/man/tcl8.5/tutorial/Tcl13.html"。这将为您提供一些见解,也检查"http://tcl.tk/man/tcl8.5/tutorial/Tcl31.html"了解更多详细信息