我想迭代原子中的值以創建新集合(但不更新)。 我有原子的一個定義: let [st (atom {})]
,現在我想做某事像這樣:基於原子和地圖函數創建新值
(-> (seq (keys @st))
(map (fn [key] [key (get @st key)]))))
提供的示例被簡化,但即使在這種情況下,我有問題。 我receving下一個錯誤:
java.lang.IllegalArgumentException: Don't know how to create ISeq from: example.test$init$reify__2273$fn__2275
at clojure.lang.RT.seqFrom(RT.java:505)
at clojure.lang.RT.seq(RT.java:486)
at clojure.core$seq.invoke(core.clj:133)
at clojure.core$map$fn__4245.invoke(core.clj:2551)
at clojure.lang.LazySeq.sval(LazySeq.java:40)
at clojure.lang.LazySeq.seq(LazySeq.java:49)
at clojure.lang.RT.seq(RT.java:484)
at clojure.core$seq.invoke(core.clj:133)
at clojure.core$print_sequential.invoke(core_print.clj:46)
at clojure.core$fn__5457.invoke(core_print.clj:147)
at clojure.lang.MultiFn.invoke(MultiFn.java:231)
at clojure.core$pr_on.invoke(core.clj:3392)
at clojure.core$pr.invoke(core.clj:3404)
at clojure.lang.AFn.applyToHelper(AFn.java:154)
at clojure.lang.RestFn.applyTo(RestFn.java:132)
at clojure.core$apply.invoke(core.clj:624)
at clojure.core$print.doInvoke(core.clj:3449)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:624)
at clojure.core$print_str.doInvoke(core.clj:4391)
...
使用 - >>替代 - >(地圖期望序列作爲最後一個參數,而不是第一個) – cgrand 2015-02-06 15:57:54
你說得對!這是非常愚蠢的問題 - 今天編碼太多。 – baju 2015-02-06 16:01:39
我知道這不是真正的代碼,但你不應該刪除一個原子兩次。 – cgrand 2015-02-06 21:11:40