我正在通过Practical Common Lisp,我差不多完成了,到目前为止我还没有回答过一个问题(或者我只是错过了它)是“require”和“load”之间的区别。
那有什么区别?
感谢。
答案 0 :(得分:9)
require
用于模块,每个模块可以包含一个或多个文件。
load
用于加载任意单个文件。
require
函数测试是否a 模块已经存在(使用 区分大小写的比较);如果 模块不存在,要求 继续加载适当的文件 或一组文件。路径名 论证,如果存在,是单一的 路径名或路径名列表 文件将按顺序加载,左侧 对。如果pathname参数是 系统没有或没有提供 将在某些方面试图确定 依赖于系统的方式,哪些文件 载入。这通常涉及到 一些模块名称的中央注册表 和相关的文件列表。
来源:http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node119.html
load
函数加载名为的文件 文件名进入Lisp环境。它 假定一个文本(字符 文件)可以自动 区别于对象(二进制) 文件由一些适当的 依赖于实现的手段, 可能由文件类型。该 文件名的默认值取自 变量 默认路径名-默认。如果文件名(在合并之后) 默认值)未明确指定 类型,文本和对象类型 该文件中的文件可用 系统,负载应尽量选择 一些更合适的文件 依赖于实现的手段。
来源:http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node217.html
答案 1 :(得分:2)
不同之处在于(require)
加载模块(如果尚未加载); (load)
加载文件。