该source
命令读取文件内容并逐行执行。
包也在内部使用 source 命令。
有人说 source 命令有缺点,我的问题是当我们使用 package (package require) 命令时不会出现同样的缺点。
我对此进行了很多分析,但对此我没有得到充分的澄清。
我想知道以下几点:
- source 命令的缺点是什么?
- 我们为什么来打包?
- 包的缺点是什么?
- 为什么我们选择命名空间?
该source
命令读取文件内容并逐行执行。
包也在内部使用 source 命令。
有人说 source 命令有缺点,我的问题是当我们使用 package (package require) 命令时不会出现同样的缺点。
我对此进行了很多分析,但对此我没有得到充分的澄清。
我想知道以下几点:
包是比源文件更高层次的概念;当你这样做时package require
,它会在内部转换为source
实现包的适当文件(或文件)。它也可能load
是一个用 C 实现的共享库,并且其他更复杂的选项也是可能的。你不必知道它在做什么。
命名空间是正交的,因为它们根本不映射到源文件。它们只是脚本可见的东西,用于定义从名称到权利(命令、变量……)的映射
按照惯例,包应该使用与包名同名的命名空间;这并没有被普遍遵循(并且没有人会改变它;许多现有的包早于命名空间机制,并且仅仅为了强制执行约定而破坏它们将是非常不利于用户的)。鼓励您遵循约定,因为它是简化事物的有用方法;它使您的代码的用户更容易。