在 clojure 中,您可以将函数映射到值序列。是否有一个内置函数可以将单个值作为参数映射到一系列函数?
(map inc [1 2 3 4])
; -> (2 3 4 5)
(reverse-map [inc dec str] 1)
; -> (2 0 "1")
(reverse-map [str namespace name] :foo/bar/baz)
; -> (":foo/bar/baz" "foo/bar" "baz")
There's juxt
这有点相似。它接受多个函数并返回一个函数,该函数将其参数传递给每个函数并返回一个返回值向量。所以:
> ((apply juxt [inc dec str]) 1)
[2 0 "1"]
主要区别在于它创建了一个向量,这当然是渴望的(即不是懒惰的)。map
创建一个惰性序列。
juxt
也适用于具有超过 1 个参数的函数:
> ((apply juxt [* / -]) 6 2)
[12 3 4]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)