refs に 2 つのマップがあり、それらを 1 つのトランザクションで相互に関連付けたいと考えています。
私の関数は次のようになります。
(defn assoc-two
[one two]
(let [newone (assoc @one :two two)
newtwo (assoc @two :one one)]
(ref-set one newone)
(ref-set two newtwo)))
今、私はassoc-two
このように呼んでいます:
(dosync (assoc-two (ref {}) (ref {})))
この時点で StackOverflowError を取得しています。
私もこれを試しました:
(defn alter-two
[one two]
(alter one assoc :two two)
(alter two assoc :one one))
one
エントリを参照する方法とその逆の方法でこれを行う方法はありtwo
ますか?