【问题标题】:get a clojure function's code获取 clojure 函数的代码
【发布时间】:2011-01-16 22:26:39
【问题描述】:

在函数加载后,clojure 中有没有办法获取函数的代码?

即。没有做类似[未经测试]的事情

(defmacro blat [x] `(do (def code ~(quote (mexpand-all x)))
                        ~x)))
(blat (defn func [abc] (...)))

【问题讨论】:

    标签: clojure


    【解决方案1】:

    您可以使用clojure.repl/source 函数获取符号的来源。但是,这仅在符号解析为的 var 位于类路径上的 .clj 文件中时才有效。例如,您不能这样做:

    user=> (defn foo [x] x)
    #'user/foo
    user=> (require 'clojure.repl)
    nil
    user=> (clojure.repl/source foo)
    Source not found
    nil
    

    【讨论】:

    • 嗯。 (mexpand-all (read-string (source-fn 'foo))) 是关于我想要的
    猜你喜欢
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多