如何在 CLOJURE 中使用名称和值并行创建多个代理(for?或 map?)?
How to create multiple agents in parallel (for? or map?) with name and values in CLOJURE?
我正在尝试制作一堆代理。个人可以做到:
(def myAgent (agent 3))
但是如果我想制作很多代理,如何在匿名函数中为代理分配名称和值?我有这个:
(def agents (vec (map agent (range 0 50)) ))
这使得有 50 个代理,但其中 none 个具有价值。当我尝试匿名函数时:
(def agents (vec (map (fn [x] (def x (agent 3)) (range 0 50)) ))
没用。任何帮助将不胜感激。
创建一个包含 3 个代理的映射,其名称是映射键 0
、1
、2
,映射值是具有初始值 :initial-value
的代理
user=> (zipmap (range 3) (repeatedly #(agent :initial-value)))
{0 #object[clojure.lang.Agent 0x31edaa7d {:status :ready, :val :initial-value}],
1 #object[clojure.lang.Agent 0x26adfd2d {:status :ready, :val :initial-value}],
2 #object[clojure.lang.Agent 0x3336e6b6 {:status :ready, :val :initial-value}]}
我正在尝试制作一堆代理。个人可以做到:
(def myAgent (agent 3))
但是如果我想制作很多代理,如何在匿名函数中为代理分配名称和值?我有这个:
(def agents (vec (map agent (range 0 50)) ))
这使得有 50 个代理,但其中 none 个具有价值。当我尝试匿名函数时:
(def agents (vec (map (fn [x] (def x (agent 3)) (range 0 50)) ))
没用。任何帮助将不胜感激。
创建一个包含 3 个代理的映射,其名称是映射键 0
、1
、2
,映射值是具有初始值 :initial-value
的代理
user=> (zipmap (range 3) (repeatedly #(agent :initial-value)))
{0 #object[clojure.lang.Agent 0x31edaa7d {:status :ready, :val :initial-value}],
1 #object[clojure.lang.Agent 0x26adfd2d {:status :ready, :val :initial-value}],
2 #object[clojure.lang.Agent 0x3336e6b6 {:status :ready, :val :initial-value}]}