我在代码(map #(% a) fns)中经常遇到这种模式,其中a是一个变量,说一个字符串,而fns是像[count #(split ",")]这样的fns序列。有没有更简洁的方式来表达这种模式?

最佳答案

更简洁?可能不是。更好的成语?要看。 juxt将任意数量的fns作为参数,并提供与其并列的功能。因此,您可以像这样使用它代替您的map

(def a "foo,bar,baz")

(map #(% a) [count #(split % #",")])
;=> (11 ["foo" "bar" "baz"])

((juxt count #(split % #",")) a)
;=> [11 ["foo" "bar" "baz"]]


一方面,您有一个懒惰的应用程序序列,另一方面,您具有功能组成。哪个更好取决于需要。

07-24 18:48