2

可能重复:
用常数映射序列

我正在尝试执行以下操作(只是一个示例):

(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)

所以,我需要找到一种方法来传递paramf,被map. 在 Clojure 中可以吗?这个特征也可以称为“功能闭包”

4

2 回答 2

2

用于partial从 f 创建一个柯里化函数,并传递参数

(defn f [param x] ( 
  ; do something with "x" AND with "param"
  ))

(defn filtered-list [param] (map (partial f param) ["a" "b" "c"]))
于 2013-01-08T10:48:34.250 回答
1

使用partial怎么样?

(defn f [param x]  
    (str param \- x) ;; do something
)

(defn filtered-list 
    [param] 
    (map (partial f param) ["a" "b" "c"]))

但是,您必须更改 的参数的顺序f

于 2013-01-08T10:48:44.120 回答