我想使用.tcl文件中的“可用”程序作为包和命名空间。
我无法区分b / w'package require'& '名称空间导入'
答案 0 :(得分:1)
它们是完全不同的概念。
名称空间是用于包含命令和变量的代码构造。和其他名称空间。 (还有一些其他的东西,但那些是主要的。)
包是一组文件,提供已定义的版本化API。它只是source
和load
个别文件的抽象,应该被认为通常只是包的实现的一部分。
通常良好做法要么将包中定义的所有命令和变量保存在具有相同名称的命名空间中,要么使包定义与包具有相同名称的单个命令。这减少了混乱的数量!然而,这只是一种良好的实践,并且有许多软件包不能以这种方式工作,通常是因为它们最初早于整个软件包机制;当然,使用一些最佳实践将所有内容更改为超正确并不如保持与现有代码的兼容性那么好。
使用命名空间来组织代码的实现。使用包将代码拆分为具有可以独立发展的已定义任务的部分。这些是完全正交的。