首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cider中的宏(例如->)

Cider中的宏(例如->)
EN

Stack Overflow用户
提问于 2016-03-21 21:43:44
回答 1查看 139关注 0票数 1

为什么使用线程宏->>会在苹果酒更新程序中产生错误:

代码语言:javascript
复制
(-> "x..")

//  Unable to resolve symbol: -> in this context
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-21 22:36:39

当您在repl中创建一个新的命名空间而尚未在其中定义任何内容时,就会发生这种情况。因此,尚未建立clojure.core函数的别名:

首先创建一个新的空白命名空间:

代码语言:javascript
复制
user> (in-ns 'i-dont-exist-yet)
#namespace[i-dont-exist-yet]

然后尝试使用线程宏(或clojure.core中的任何内容):

代码语言:javascript
复制
i-dont-exist-yet> (-> 1)
CompilerException java.lang.RuntimeException: Unable to resolve symbol: -> in this context, compiling:(*cider-repl api*:47:18) 

它无法在当前命名空间中查找符号->,但如果您告诉它要显式使用哪个命名空间,它可以工作:

代码语言:javascript
复制
i-dont-exist-yet> (clojure.core/-> 1)
1

clojure.core中有一个方便的函数,它将为您的新名称添加所有预期的引用。当您从顶部是ns宏的文件中创建名称空间时,您不需要这样做,因为ns为您创建了这个名称空间(以及其他有用的东西):

代码语言:javascript
复制
i-dont-exist-yet> (clojure.core/refer-clojure)
nil
i-dont-exist-yet> (-> 1)
1
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36142191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档