TCL:关于source,package,namespace命令

时间:2013-09-12 06:22:58

标签: tcl

我想知道tcl中的模块化编程以及我们如何实现这一点。

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

我想知道3个概念的缺点和适当的层次结构。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

我不确定我是否理解你的问题,所以我会尝试解释你在问题中提出的3个命令:

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

我建议你使用包,每个包在它自己的文件中,每个包的命名空间等于所有命令所在的包名。
您应该使用namespace export导出公共命令。