我正在Clojure中编写一个简单的照片库应用程序。我有一个library
映射,它有:photos
键,它是照片映射的矢量。然后,我有一个函数,可以将照片添加到库中——它将库对象和要添加的照片作为参数。
(defn add-to-library [library photo]
...
)
它返回一个添加了photo
的library
映射。
现在,我想在照片列表上"映射"这个功能。我需要能够将library
对象从一个迭代传递到下一个迭代。
在Clojure中,做这件事的惯用方法是什么?
尝试:
(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