将函数应用于具有常量参数的集合的元素



可能重复:
用恒定映射序列

我正在尝试做以下(只是一个例子(:

(defn f [x param] ( 
  ; do something with "x" AND with "param"
  ))
(defn filtered-list [param] (map f ["a" "b" "c"]))
; called later as
(filtered-list 123)
; expected calls are: (f "a" 123), (f "b" 123) and (f "c" 123)

因此,我需要找到一种方法将param传递给f,由map使用。在Clojure中可能吗?这一特性也被称为"功能性闭合"。

使用partial从f创建一个带有传递的参数的curried函数

(defn f [param x] ( 
  ; do something with "x" AND with "param"
  ))
(defn filtered-list [param] (map (partial f param) ["a" "b" "c"]))

使用partial怎么样?

(defn f [param x]  
    (str param - x) ;; do something
)
(defn filtered-list 
    [param] 
    (map (partial f param) ["a" "b" "c"]))

不过,您必须更改f的参数顺序。

最新更新