【问题标题】:apply function to elements of collection with a constant argument [duplicate]将函数应用于具有常量参数的集合元素[重复]
【发布时间】:2013-01-08 10:36:07
【问题描述】:

可能重复:
Mapping over sequence with a constant

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

(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 中可以吗?此功能也可能称为"functional closure"

【问题讨论】:

    标签: clojure


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      partial怎么样?

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

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

      【讨论】:

        猜你喜欢
        • 2010-10-23
        • 1970-01-01
        • 2018-03-21
        • 2023-01-24
        • 2016-10-14
        • 1970-01-01
        • 2022-12-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多