在Clojure中,( - > ...... ......)是什么意思?改变事物的顺序会产生不同的输出.
(defn my-method
"description"
[& args]
(-> things/thing1
things/thing2
things/thing3
things/thing4
things/thing5))
Run Code Online (Sandbox Code Playgroud)
这是"线程优先"的宏:
(-> a b c)
Run Code Online (Sandbox Code Playgroud)
相当于
(c (b a))
Run Code Online (Sandbox Code Playgroud)
基本上这个宏用于避免嵌套大量的表单.它只是插入第一个表单作为第二个表单的第一个参数:(-> 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)))))
Run Code Online (Sandbox Code Playgroud)