当前位置:  开发笔记 > 编程语言 > 正文

交换原子作为使用函数的最后一个参数

如何解决《交换原子作为使用函数的最后一个参数》经验,为你挑选了1个好方法。

我有以下功能:

(defn add-recommendations-to-cache [{:keys [trackingId rec-service recs]} cache]
  (assoc-in cache [trackingId rec-service] recs))

我将原子定义为:

(def cache (atom {}))

如果我可以改变传递给函数的参数的顺序,我会使用:

(swap! cache add-recommendations-to-cache msg)

既然我不能,我怎么能swap使用原子,函数和包含第一个参数所需要的消息?我尝试了几种可能的组合(见下文),但似乎都没有.

我试过了:

(swap! cache add-recommendations-to-cache msg cache)

(swap! cache (add-recommendations-to-cache msg))

和其他几个没用.



1> Lee..:

您可以传递自己的函数,以您想要的顺序应用参数:

(swap! cache 
       (fn [current msg] (add-recommendations-to-cache msg current))
       msg)

要么

(swap! cache #(add-recommendations-to-cache %2 %1) msg)

或者关闭msg:

(swap! cache #(add-recommendataions-to-cache msg %))

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有