TCL:关于源、包、命名空间命令



我想了解 tcl 中的模块化编程以及我们如何实现这一目标。

在一些 tcl 教程中提到像 source 命令在实现"模块化"方面有一些缺点,因此我们来到"包"之后,"包"有更多的缺点,所以我们带来了包和命名空间的组合。

我想知道 3 个概念的缺点和适当的层次结构是什么. 谁能帮我?

我不确定我是否正确理解了您的问题,所以我将尝试解释您在问题中抛出的 3 个命令:

  • source : 将文件评估为 Tcl 脚本。它只是打开文件,读取直到EOF字符(在窗口和*nix上^Z)并对其进行评估。
    它不会跟踪源文件,因此您可以再次获取相同的文件(非常适合热修补),但这是缺点:它将再次获取文件。
  • package:管理包。它基本上跟踪提供的包,并尝试找出加载新包必须获取哪个文件。
  • namespace :它们为命令和变量提供上下文,因此您不必担心命令的唯一名称。只是命名空间必须是唯一的。与加载包或其他模块无关,它只提供命名空间。
我建议你使用包,每个包都有自己的

文件,每个包的命名空间等于所有命令所在的包名称。
您应该使用 namespace export 导出公共命令。

最新更新