为什么使用线程宏->>会在苹果酒更新程序中产生错误:
(-> "x..")
// Unable to resolve symbol: -> in this context发布于 2016-03-21 22:36:39
当您在repl中创建一个新的命名空间而尚未在其中定义任何内容时,就会发生这种情况。因此,尚未建立clojure.core函数的别名:
首先创建一个新的空白命名空间:
user> (in-ns 'i-dont-exist-yet)
#namespace[i-dont-exist-yet]然后尝试使用线程宏(或clojure.core中的任何内容):
i-dont-exist-yet> (-> 1)
CompilerException java.lang.RuntimeException: Unable to resolve symbol: -> in this context, compiling:(*cider-repl api*:47:18) 它无法在当前命名空间中查找符号->,但如果您告诉它要显式使用哪个命名空间,它可以工作:
i-dont-exist-yet> (clojure.core/-> 1)
1clojure.core中有一个方便的函数,它将为您的新名称添加所有预期的引用。当您从顶部是ns宏的文件中创建名称空间时,您不需要这样做,因为ns为您创建了这个名称空间(以及其他有用的东西):
i-dont-exist-yet> (clojure.core/refer-clojure)
nil
i-dont-exist-yet> (-> 1)
1https://stackoverflow.com/questions/36142191
复制相似问题