在普通的repl上,这是有效的:
(defmacro evaluate
[to-eval]
(eval to-eval))
(evaluate +) ;=> #function[clojure.core/+]
然而,在ClojureScript中,当使用如下的分离文件时:
file one: macro.clj
(ns space.macro)
(defmacro evaluate
[to-eval]
(eval to-eval))
file two: core.cljs
(ns space.core
(:require-macros [space.macro :refer [evaluate]))
(evaluate clojure.core/+) ;=> No error
(evaluate +) ;=> Unable to resolve symbol: + in this context
我们遇到了一些错误。这让我们想问为什么会出现这些错误?以及如何解决?
eval
的示例,这个问题将更具信息性。如果这是关于在ClojureScrips中使用宏来评估内容的问题,那也没问题。只要我们知道其中的区别,就可以更好地回答。 - Arthur Ulfeldt