namespaces - Tcl命名空间定义

标签 namespaces tcl

我找不到答案,使用 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/

相关文章:

c++ - 带有命名空间的编译器的有趣行为

c - 如何跟踪 printf 被禁用的方式/位置?

TCL 命令 - 字符串修剪

arrays - 返回数组列表

kubernetes - OPA 通过 Kubernetes 集群请求

.net - 你如何组织你的命名空间?

python - 使用 matplotlib *没有* TCL

tcl - 如何使用foreach循环一一读取两个文件的内容?

namespaces - 如何避免 haxe Type 类和 C# Type 类之间的冲突?

c++ - 关于 C++ 未命名命名空间的一些事情