是否在同一符号幂等上使用require多次?


11

require幂等的吗?即做

(require 'helm)

(require 'helm)
(require 'helm)

结果相同吗?

Answers:


14

是。从命名要素(重点是我的):

功能名称是代表功能,变量等集合的符号。定义它们的文件应提供功能。使用它们的另一个程序可以确保通过要求功能来定义它们。如果尚未加载定义文件,则将其加载。

要要求存在功能,请require以功能名称作为参数进行调用。require查看全局变量features以查看是否已提供所需的功能。如果不是,它将从适当的文件中加载功能。此文件provide在顶层调用将功能添加到features;如果失败,则require发出错误信号


接受引用文档。
PythonNut

请在此处合并Gilles答案中的信息。或者,@ Gilles,也可以将这个答案输入您的答案。
daveloyall 2015年

13

是的,前提是该代码符合helm.elhelm.elc必须遵守的规则(provide 'helm)。调用(provide 'helm)将符号标记helm为已加载功能,这将导致第二个调用(require 'helm)不执行任何操作。

如果未调用已加载的软件包,providerequire表示错误,并且该功能未标记为已加载,因此第二次调用(require 'helm)将再次尝试加载(并且通常出于相同原因再次失败)。


+1感谢您的额外信息。阅读文档后,它解决了我的困惑。
PythonNut
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.