【发布时间】:2013-01-29 09:24:30
【问题描述】:
我想使用 .tcl 文件中的过程,该文件作为包和命名空间“可用”。
我无法区分 b/w 'package require' 和 'namespace import'
【问题讨论】:
标签: namespaces tcl packages
我想使用 .tcl 文件中的过程,该文件作为包和命名空间“可用”。
我无法区分 b/w 'package require' 和 'namespace import'
【问题讨论】:
标签: namespaces tcl packages
它们是完全不同的概念。
命名空间是用于包含命令和变量的代码结构。和其他命名空间。 (还有一些其他的东西,但这些是主要的。)
包是提供已定义的版本化 API 的文件集合。它是对 sourceing 和 loading 单个文件的抽象,通常应将其视为包实现的一部分。
通常好习惯将包定义的所有命令和变量保存在同名的命名空间中,或者让包定义与包同名的单个命令。这减少了混乱的数量!然而,这只是进化的良好实践,并且有许多包不能以这种方式工作,通常是因为它们最初确实早于整个包机制;当然,通过一些最佳实践将所有内容更改为超正确的,不如保持与现有代码的兼容性好。
使用命名空间来组织代码的实现。使用包将代码拆分为具有可独立发展的已定义任务的片段。这些是完全正交的。
【讨论】: