相关疑难解决方法(0)

通过Clojure中的任意函数管道数据

我知道该->表单可用于将一个函数结果的结果传递给另一个:

(f1 (f2 (f3 x))) 
(-> x f3 f2 f1) ; equivalent to the line above
Run Code Online (Sandbox Code Playgroud)

(取自ociweb优秀的Clojure教程)

但是,此表单要求您知道要在设计时使用的功能.我想做同样的事情,但在运行时使用任意函数列表.

我已经编写了这个循环函数,但是我觉得有更好的方法:

(defn pipe [initialData, functions]
  (loop [
      frontFunc (first functions)
      restFuncs (rest functions)
      data initialData ]
    (if frontFunc
      (recur (first restFuncs) (rest restFuncs) (frontFunc data) )
      data )
  ) )
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?

clojure

16
推荐指数
2
解决办法
1393
查看次数

标签 统计

clojure ×1