如何取消引用动态实体原子?

时间:2017-12-24 12:35:44

标签: clojure

我正在动态注册一个符号,我可以验证它是否成功:

(defn- register[x]
  (intern 'foo.core x (atom {})) 
  (println "Var " x " gets " (var-get (get (ns-interns 'foo.core) x))))

; Var  Persons  gets  #object[clojure.lang.Atom 0x688a2c09 {:status :ready, :val {}}]

我的核心问题是:如何在(swap!...

中使用x

第二个问题是:如何取消引用x来获取地图本身?

最后一个问题是:有更清洁的方法吗?

1 个答案:

答案 0 :(得分:4)

groupFinder(df['item'].values)函数返回一个intern对象,由于它是一个参考值,因此可以取消引用(使用variable@)。它也可以从功能返回并进行操作,以获得所需的结果。此var指向的值(或var的绑定)指向一个原子,这是另一个参考值,也可以取消引用。

这是一个如何处理这种情况的小例子:

deref