将var或#'应用于Clojure中的函数列表

mat*_*sko 4 functional-programming clojure

我正在尝试在Clojure中读取函数集合的元数据,但var或reader特殊表单不起作用,除非它们直接处理符号.

; this works
(var my-fn)

; this doesn't
(defn val-it [x] (var x))
(val-it my-fn)
Run Code Online (Sandbox Code Playgroud)

有没有办法让这个在另一个函数的范围内工作?

Mic*_*zyk 8

resolve返回当前命名空间的上下文中与给定符号对应的Var或类对象.ns-resolve允许您指定要在其中解析符号的命名空间.

(resolve 'my-fn)
;= #'some.ns/my-fn
Run Code Online (Sandbox Code Playgroud)

如果符号无法解析为Var,nil则返回.