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