有些函数可以读取函数的源代码,例如:source
和source-fn
。
在提供命名空间时,是否有任何方法或函数返回Clojure文件的源代码?
例如:(all-source 'my-ns)
返回如:
(ns my-ns
(:require [kezban.core :refer :all]
[leiningen.c.util :as util]))
(defn my-fn
[]
)
...
答案 0 :(得分:0)
我想我找到了一种方法(如果ns至少有一个var,它会起作用):
(defn source-clj
[ns]
(require ns)
(some->> ns
ns-publics
vals
first
meta
:file
(.getResourceAsStream (RT/baseLoader))
IOUtils/toString))