2016-02-12 59 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

相關問題