0

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

在一些 tcl 教程中提到类似 source 命令在实现“模块化”方面有一些缺点,所以我们来到“包”之后,“包”有更多缺点,所以我们结合了包和命名空间。

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

4

1 回答 1

1

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

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

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

于 2013-09-12T06:47:33.143 回答