在Clojure中,( - > ...... ......)是什么意思?改变事物的顺序会产生不同的输出。
(defn my-method
"description"
[& args]
(-> things/thing1
things/thing2
things/thing3
things/thing4
things/thing5))
答案 0 :(得分:5)
这是"thread-first"宏:
(-> a b c)
相当于
(c (b a))
基本上这个宏用于避免嵌套大量表单。它只是插入第一个表单作为第二个表单的第一个参数:(-> a b)
变为(b a)
。然后将结果表单作为第三个表单的第一个参数插入:(-> (b a) c)
变为(c (b a))
。所以,你的例子相当于:
(defn my-method
"description"
[& args]
(things/thing5 (things/thing4 (things/thing3 (things/thing2 things/thing1)))))
答案 1 :(得分:2)
(doc)
是一个在Clojure REPL中运行的便捷实用程序。它应该处于日常发展的角落。
用户=> (doc - >)
clojure.core / - >
([x& forms])
宏
通过表单线程化expr。插入x作为 第一个表单中的第二个项目,如果它不是a,则列出它 列表已经。如果有更多表单,请插入第一个表单作为 第二种形式的第二项,等等。