【发布时间】:2012-08-18 17:11:44
【问题描述】:
以下程序在 Clojure 中按预期工作,但在 ClojureScript 中引发错误。我想知道这是一个错误还是 ClojureScript 中根本没有该功能,或者我是否需要重新考虑我尝试这样做的方式。非常感谢您提前提供的帮助。
; Clojure...
(defn foo [x] x)
(defn foobee [x] (str (foo x) "bee"))
(println
((resolve (symbol (str "foo" "bee"))) "bizzee"))
;=> bizzeebee
; ClojureScript...
(defn foo [x] x)
(defn foobee [x] (str (foo x) "bee"))
(.log js/console
((resolve (symbol (str "foo" "bee"))) "bizzee"))
;=> Exception in thread "main" java.lang.IllegalArgumentException: Don't know how to create ISeq from: clojure.lang.Symbol
【问题讨论】:
-
我已经在下面发布了主要问题的答案,但我想知道这个异常是从哪里出现的?这是 Java 异常,而不是 JS 错误,所以我猜这是编译期间或浏览器 repl 会话中的问题。编译器在编译这段代码时绝对应该没有问题,而且它确实不在我的机器上,所以如果它确实发生在编译时,也许它可能是你没有粘贴到这里的 ClojureScript 代码的某些部分的问题?如果它是浏览器 repl 的事情,您能否将在服务器中产生此异常的浏览器 repl 会话的日志粘贴到某处?
-
如果结果不是很明显,一个最小的破坏示例和您的 ClojureScript 版本的发布号/提交 sha 将非常有用。
-
感谢您的帮助。我尝试使用简单和高级优化进行编译,但没有尝试不进行优化进行编译。这样做会将其推迟到 JavaScript 级别的错误。
标签: clojure clojurescript