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(代理)的值。您需要取消引用 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 回答