将函数列表应用于Clojure中的相应数据列表

leo*_*bot 7 clojure

所以我有一个函数列表和一个数据列表:

[fn1 fn2 fn3] [item1 item2 item3]
Run Code Online (Sandbox Code Playgroud)

如何将每个函数应用于其相应的数据项:

[(fn1 item1) (fn2 item2) (fn3 item3)]
Run Code Online (Sandbox Code Playgroud)

例:

[str #(* 2 %) (partial inc)]   [3 5 8]

=> ["3" 10 9]
Run Code Online (Sandbox Code Playgroud)

Dog*_*ert 7

您可以使用 map

(map #(%1 %2) [str #(* 2 %) (partial inc)] [3 5 8])
("3" 10 9)
Run Code Online (Sandbox Code Playgroud)

如果你需要一个向量,你可以 (apply vector ...)

(apply vector (map #(%1 %2) [str #(* 2 %) (partial inc)] [3 5 8]))
["3" 10 9]
Run Code Online (Sandbox Code Playgroud)

免责声明:我不太了解Clojure,所以可能有更好的方法来做到这一点.

  • @ user1184248我认为`(partial inc)`会起作用,但它和`inc`是一样的. (2认同)
  • 为了取回一个矢量,稍短一些:`(mapv#(%1%2)[str#(*2%)inc] [3 5 8])` (2认同)