我在一个 ns 中定义了以下内容 -
有一个服务原子,还有另一个要添加到该原子的函数 -
(ns ex.first)
(def services (atom []))
(defn add-service
[fns]
(swap! services conj fns))
在另一个ns的代码中,我这样做-
(ns ex.second ..)
(add-service [fn1 fn2 fn3])
1)我假设当我运行编译代码的repl时,它应该将向量添加到原子。但是,当我评估@services
它时,它会返回[]
。
2)如果我(add-service [fn1 fn2 fn3])
在repl中评估,上述方法有效。
3)我也尝试使用将add-service
fn 转换为宏。但是我仍然发现它@services
是空的。
因此,如果有人可以帮助解决这些问题,我们将不胜感激-
1)为什么 add-service 调用在代码编译时不向原子添加向量 -
add-service
被定义为一个fn
。add-service
被定义为一个macro
。
2)我如何使它工作:)