我找不到答案,使用 double::(当我读取两者都使用的源文件时)的命名空间定义有什么区别:
namespace eval somenamespace {
}
和
namespace eval ::somenamespace {
}
不带::的示例 https://github.com/tcltk/tcllib/blob/master/modules/generator/generator.tcl#L16
示例:: https://github.com/tcltk/tcllib/blob/master/modules/ftp/ftp.tcl#L56
最佳答案
这有点像路径名。如果您位于根目录(未命名的 /
路径)中,则使用 bar
或 /bar
没有区别:两者都引用/bar
目录。如果您在 /foo
中,那么使用 bar
或 /bar
非常重要:第一个指的是 /foo/bar
目录,第二个仍然指的是 /bar
目录。
::
类似于命名空间名称的 /
。在根命名空间(空的 ::
名称)中,使用 bar
或 ::bar
没有区别:两者都引用 ::bar
命名空间。如果您在 ::foo
中,那么使用 bar
或 ::bar
非常重要:第一个引用 ::foo::bar
命名空间,第二个仍然引用 ::bar
命名空间。
文档:namespace
关于namespaces - Tcl命名空间定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33168370/