Syntax 何时在clojure require中包含撇号?

Syntax 何时在clojure require中包含撇号?,syntax,clojure,Syntax,Clojure,以下两者之间的区别是什么: (require '[some-package.sub as some]) (require 'example.core) 及 什么时候我应该使用一个而不是另一个?只有带撇号的才能在REPL环境中工作 require是一个函数(在REPL中使用(源代码require)进行检查)。因此,is在自身评估之前评估其参数 在调用时,require the symbolsome package.sub将(points)解析为nothing,因此您会得到一个“无法解析symbo

以下两者之间的区别是什么:

(require '[some-package.sub as some])
(require 'example.core)


什么时候我应该使用一个而不是另一个?只有带撇号的才能在REPL环境中工作

require
是一个函数(在REPL中使用
(源代码require)
进行检查)。因此,is在自身评估之前评估其参数

在调用时,require the symbol
some package.sub
(points)
解析为nothing,因此您会得到一个“无法解析symbol:
在此上下文中指向nothing的符号”

但是,如果您引用上述符号,我们可以得到
require
的实际计算结果。因此,
需要
,因为它是一个函数,所以需要引用表单

现在
ns
是一个宏(在REPL中使用
(源ns)
进行检查)。因此,is在展开之前不会评估其参数。从技术上讲,它可以采用自由符号或引用的形式,但决定使用原始的自由符号<代码>(ns lalala(:require[some-package.sub:as-some])

No-o-o-o-ow,当您使用
a
调用
require
(函数)时,您实际上需要a解析为的var所持有的符号

例子: …那是因为require是一个函数

希望能有所帮助。

可能会重复
(require [some-package.sub as some])
(require example.core)
(def a 'B)
(require a)
FileNotFoundException Could not locate B__init.c;ass or B.clj on the classpath[...]