【发布时间】:2020-07-17 06:52:05
【问题描述】:
我是 Clojure 语言的新手。
在阅读Clojure functions 时,我找到了示例#([%])。所以我尝试如下使用它:
(def test1 #([%]))
(test1 5)
因此,我收到以下错误:
ArityException Wrong number of args (0) passed to: PersistentVector clojure.lang.AFn.throwArity (AFn.java:429)
这似乎是它试图调用我想要返回的数组。
挖了一阵子,找到解决办法如下:
(def test1 #(-> [%]))
(test1 5)
我有一些问题:
- 为什么
#([%])不起作用?我对表达式#([x])做了什么? - 在正确的示例中,我使用了thread-first macro。根据其文档,它用于将参数传递给下一个函数,例如
(-> x (+ 1))。在这种情况下,我什至没有要传递的函数; *在这种情况下,next 函数是什么?我无法理解为什么它解决了我的问题
【问题讨论】:
-
规范为
#(vector x)。答案 -
感谢@leetwinski,我使用这些功能只是为了学习。教程本身建议使用
vector函数。 -
stackoverflow.com/questions/4921566/… 对您的主要问题进行了非常详尽的介绍。不过,我不会将其作为重复项关闭,因为对
->的额外讨论很有用。
标签: clojure