我有两个要比较的序列,我需要将比较结果保存在地图中,第一个序列中的数据用作键,第二个用作 val。这是有效的示例代码
(def myAtom (atom {}))
(map #(if (== %1 %2) (swap! myAtom assoc %1 %2 ))
[1 2 3] [4 5 3])
(prn @myAtom) ; ==> {3 3}
然而,在将上面的“相同”的东西放入一个 let 绑定之后,它就不再起作用了
(let [ myAtom (atom {})]
(map #(if (== %1 %2) (swap! myAtom assoc %1 %2 ))
[1 2 3] [4 5 3])
(prn @myAtom)) ;;==> {} empty???
那么问题来了,在 let 绑定中 myAtom 会发生什么?怎么不见了?