我想使用 .tcl 文件中的过程,该文件作为包和命名空间“可用”。
我无法区分黑白“包要求”和“命名空间导入”
它们是完全不同的概念。
命名空间是用于包含命令和变量的代码结构。和其他命名空间。(还有一些其他的东西,但这些是主要的。)
包是提供已定义的版本化 API 的文件集合。source
它是对单个文件的抽象load
,通常应该被认为只是包实现的一部分。
将包定义的所有命令和变量保存在同名的命名空间中,或者让包定义一个与包同名的命令,通常是一种很好的做法。这减少了混乱的数量!然而,这只是进化的良好实践,并且有许多包不能以这种方式工作,通常是因为它们最初确实早于整个包机制;当然,通过一些最佳实践将所有内容更改为超正确的不如保持与现有代码的兼容性好。
使用命名空间来组织代码的实现。使用包将代码拆分为具有可独立发展的已定义任务的片段。这些是完全正交的。