我在代码(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"]]
一方面,您有一个懒惰的应用程序序列,另一方面,您具有功能组成。哪个更好取决于需要。