我很难理解刺伤 - > Clojure的速记

mag*_*e f 1 clojure

在Clojure中,( - > ...... ......)是什么意思?改变事物的顺序会产生不同的输出.

(defn my-method
  "description"
  [& args]
  (-> things/thing1
      things/thing2
      things/thing3
      things/thing4
      things/thing5))
Run Code Online (Sandbox Code Playgroud)

Jar*_*lax 5

这是"线程优先"的宏:

(-> 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)