-1

source命令读取文件内容并逐行执行。

包也在内部使用 source 命令。

有人说 source 命令有缺点,我的问题是当我们使用 package (package require) 命令时不会出现同样的缺点。

我对此进行了很多分析,但对此我没有得到充分的澄清。

我想知道以下几点:

  1. source 命令的缺点是什么?
  2. 我们为什么来打包?
  3. 包的缺点是什么?
  4. 为什么我们选择命名空间?
4

1 回答 1

1

包是比源文件更高层次的概念;当你这样做时package require,它会在内部转换为source实现包的适当文件(或文件)。它也可能load是一个用 C 实现的共享库,并且其他更复杂的选项也是可能的。你不必知道它在做什么。

命名空间是正交的,因为它们根本不映射到源文件。它们只是脚本可见的东西,用于定义从名称到权利(命令、变量……)的映射

按照惯例,包应该使用与包名同名的命名空间;这并没有被普遍遵循(并且没有人会改变它;许多现有的包早于命名空间机制,并且仅仅为了强制执行约定而破坏它们将是非常不利于用户的)。鼓励您遵循约定,因为它是简化事物的有用方法;它使您的代码的用户更容易。

于 2013-09-16T12:22:36.297 回答