クロージャを初期状態に復元またはリセットする簡単な方法はありますか?たとえば、以下の関数で、myClosureFnに関連付けられているstat1とstat2の値を1にリセットするにはどうすればよいですか?
この質問のコンテキスト:私はさまざまな関数で以下の構造を使用していますが、1つの関数がクロージャーに関連付けられた値を「混乱」させる可能性があります。したがって、別の関数に再度渡すには、初期状態にリセット/復元する必要があります。
(def myClosureFn
(let [stat1 (atom 1)
stat2 (atom 1)
;..stat3 stat4 ...
]
(fn [m]
(swap! stat1 inc)
(reset! stat2 (* 2 m))
[@stat1 @stat2])))
(myClosureFn 1) ;--> [2 2]
(myClosureFn 2) ;--> [3 4]
(myClosureFn 2) ;--> [4 4]
(myClosureFn 3) ;--> [5 6]
;...
; how to get [ 1 1 ] back to myClosureFn ?