1

最小限の障害の場合:

(ns test)

(def a (agent "hello"))

(send a (fn [x] "world")) ; works

(send (ns-resolve 'test 'a) (fn [x] "test")) ; fails

質問:

最後の行が失敗するのはなぜですか?

これは、コードのホットロードシステムの一部です。ns-resolveを使用する必要があります。

これを機能させる方法はありますか?

ありがとう!

4

1 に答える 1

3

ns-resolveは、var(エージェント)の値ではなく、varを返します。値を取得するには、変数の参照を解除する必要があります。

(send (deref (ns-resolve 'test 'a)) (fn [x] "world"))
;; or
(send @(ns-resolve 'test 'a) (fn [x] "world"))
于 2012-05-09T07:07:34.173 に答える