【问题标题】:TCL Packages & namespacesTCL 包和命名空间
【发布时间】:2013-01-29 09:24:30
【问题描述】:

我想使用 .tcl 文件中的过程,该文件作为包和命名空间“可用”。

我无法区分 b/w 'package require' 和 'namespace import'

【问题讨论】:

    标签: namespaces tcl packages


    【解决方案1】:

    它们是完全不同的概念。

    命名空间是用于包含命令和变量的代码结构。和其他命名空间。 (还有一些其他的东西,但这些是主要的。)

    是提供已定义的版本化 API 的文件集合。它是对 sourceing 和 loading 单个文件的抽象,通常应将其视为包实现的一部分。

    通常好习惯将包定义的所有命令和变量保存在同名的命名空间中,或者让包定义与包同名的单个命令。这减少了混乱的数量!然而,这只是进化的良好实践,并且有许多包不能以这种方式工作,通常是因为它们最初确实早于整个包机制;当然,通过一些最佳实践将所有内容更改为超正确的,不如保持与现有代码的兼容性好。

    使用命名空间来组织代码的实现。使用包将代码拆分为具有可独立发展的已定义任务的片段。这些是完全正交的。

    【讨论】:

    • 如果您了解 Java/OSGi,请将 Tcl 命名空间视为有点像 Java 包,而 Tcl 包有点像 OSGi 包。由于安全模型非常不同(而且它们的工作方式完全不同!),这个类比并不完美,但意图有很大的重叠。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    相关资源
    最近更新 更多