2016-02-12 63 views
0

如果我在Clojure中有一个查询给了我一组结果,并且我需要将这些结果发送到一个全局变量(它可能是空的或有一个旧值)。所以,每当我有新的结果并且能够在其他地方使用它们时,我需要将结果重新分配给这个全局集合。任何人有一个想法如何做到这一点?如何将一组值分配给clojure中的另一个集合

+0

听起来像你正在寻找一个'原子'。你有什么尝试? – jmargolisvt

+0

我试过重置!但它不起作用,我不知道我是否以赖特的方式使用它 – user3006595

+0

发布您的代码。 – jmargolisvt

回答

2

如果您的全局是​​例如

(def global (atom #{})) 

那么你可以使用reset!到例如改变

(reset! global #{:new :value}) 

如果global var直接绑定到一组例如

(def global #{}) 

您可以使用alter-var-root更新var中的值例如,

(alter-var-root #'global (constantly #{:new :value})) 

如果您有选择,您应该更喜欢使用​​。

+0

但如果我有一组非常大的结果,我不能手动编写它们,是否有任何方法将结果自动分配给全局 – user3006595

+0

这就是函数的用途。您可以动态生成您需要交换的键/值对。 – jmargolisvt

+0

非常感谢,它的工作原理非常好:) – user3006595

相关问题