使用robert.hooke进行元编程(在代码中构建#'some.qualified / name)

时间:2013-11-30 02:58:53

标签: clojure

robert.hooke添加了方法的钩子,如下所示:

(add-hook #'fully.qualified/name-to-override
          (fn [f & args] 42)) ; override with lambda to return 42

我想迭代一个符号向量,以便为许多函数添加钩子,如下所示:

(doseq [f '[func-a func-b func-c]]
  (add-hook (symbol "fully.qualified" (str f))
            (fn [& args] 42)))

但是,这不起作用,因为(symbol s1 s2)生成的符号实际上并不是函数对象本身。这样做的正确方法是什么?我也试过将(symbol ...)传递给resolve-ns,但这没有用。

1 个答案:

答案 0 :(得分:2)

在符号上使用ns-resolve

  (ns-resolve 'fully.qualified f)