< p>
->
和 ->>
宏只是为了使代码更易读,还是它们还具有其他特定功能?
线程优先(->
)和线程最后(->>
)的存在是为了使代码更易读。但这已经非常重要了!
它允许取消嵌套函数调用(取自clojuredocs的示例):
;; Arguably a bit cumbersome to read:
user=> (first (.split (.replace (.toUpperCase "a b c d") "A" "X") " "))
"X"
;; Perhaps easier to read:
user=> (-> "a b c d"
.toUpperCase
(.replace "A" "X")
(.split " ")
first)
(-> {... }
...
...
(count))
(count (...(... {...})))
some->
和some->>
线程首尾,但如果任何步骤返回nil
,则停止评估,就像 maybe monad 一样。cond->
和cond->>
测试条件以决定是否将值传递到每个线程化形式中。 - Magos.replace
.toUpperCase
),调用Java方法和Clojure库之间是否有任何区别或好处:(clojure.string/replace)
(clojure.string/upper-case)
? - user4813927doto
宏感兴趣。 - nha