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 symbolsome 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[...]