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

0名前がマップ キー、1である 3 つのエージェントを含むマップを作成し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}]}
于 2015-10-09T06:13:48.130 に答える