我想从控制台输入数字,输入到-1时退出,并把这些数字存储在映射dict中
下面是我单独用一个原子代码
(def dict (atom {}))
(defn foo []
(loop [n (read-line) m 1]
(if (not= "-1" n)
(do
(swap! dict assoc m (Integer/parseInt n))
(recur (read-line) (inc m)))))
调用函数并在控制台输入数字1 2 3 4 -1(输入每个后回车),对dict解引用
@dict
{1 1, 2 2, 3 3, 4 4}
其实第一次想到的使用两个原子
(def dict (atom {}))
(def mynum (atom 0))
(defn foo []
(loop [n (read-line)]
(if (not= "-1" n)
(do
(swap! mynum inc)
(swap! dict assoc mynum (Integer/parseInt n))
(recur (read-line))))))
但我调用时却发现解引用dict
@dict
{#object[clojure.lang.Atom 0x4b9a9d8a {:status :ready, :val 4}] 4}
也就是说dict只传入了最后的mynum
另外我还发现就算把mynum和dict设置为ref也是这个结果,agent也一样,
请问我这个代码有没有哪里不对的地方??