0

我正在尝试制作一堆代理。个人可以这样做:

(def myAgent (agent 3))

但是如果我想制作很多代理,如何在匿名函数中为代理分配名称和值?我有这个:

(def agents (vec (map agent (range 0 50)) ))

这产生了 50 个代理,但没有一个具有价值。当我尝试匿名函数时:

(def agents (vec (map (fn [x] (def x (agent 3)) (range 0 50)) ))

它不起作用。任何帮助将不胜感激。

4

1 回答 1

2

创建一个包含 3 个代理的映射,其名称是映射键0, 12映射值是具有初始值的代理: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}]}
于 2015-10-09T06:13:48.130 回答