我正在Clojure中编写一个简单的照片库应用程序。我有library
地图,其中:photos
键是照片地图的矢量。然后,我有一个将照片添加到库中的函数---它将库对象和照片作为参数添加。
(defn add-to-library [library photo]
...
)
它会返回library
地图并添加photo
。
现在,我想在照片列表中“映射”此功能。我需要能够将library
对象从一次迭代传递到下一次迭代。
在Clojure中这样做的惯用方法是什么?
答案 0 :(得分:7)
尝试:
(reduce add-to-library library list-of-photos)
。
reduce
功能很棒,是一种在许多特定情况下都令人惊讶地适用的通用工具。其中许多情况都像你的情况,你有一个“东西集合”,一个“为该集合添加东西的功能”,以及一个“要添加的东西列表”。如果首先了解reduce
,可能这不是起始材料,但我发现它非常有趣:http://clojure.com/blog/2012/05/08/reducers-a-library-and-model-for-collection-processing.html