clojure中的-> 和 ->> 操作极大的缓解了括号嵌套的问题
(-> [2 5 4 1 3 6] (reverse) (rest) (sort) (count))
=> 5
(count (sort (rest (reverse [2 5 4 1 3 6]))))
=> 5
根据官方的解释->是一个宏,解释起来有点绕口,->的参数是一系列的s表达式
-> 会依次把第n个s表达式塞入第n+1个表达式的第二个位置,并移除第n个表达式
->>则是塞入到最后一个位置
下面的demo表示了两者的差异
(-> 1
(+ 1)
(* 2)
(/ 3))
=> 4/3
(->> 1
(+ 1)
(* 2)
(/ 3))
=> 3/4
相当于
(/ (* (+ 1 1) 2) 3)
=> 4/3
(/ 3 (* 2 (+ 1 1)))
=> 3/4