我一直在使用meta
函数,只是为了好玩,我在函数定义周围放了一个元数据并在emacs中对它进行评估......我得到了这个输出:
(meta (defn has-signal [sigtype]
(fn [ex]
(-> ex ex-data :ribol.core/signal (= sigtype)))))
=> {:ns #<Namespace ribol.test-ribol>, :name has-signal,
:arglists ([sigtype]), :column 8, :line 1, :file "NO_SOURCE_PATH"}
这是怎么回事? clojure如何知道函数所在的行号和命名空间?
答案 0 :(得分:0)
编译器知道这个代码被证明了。这与堆栈跟踪的工作方式相同。
如果你在repl中评估,那么这个信息就会丢失(NO_SOURCE_PATH),这很痛苦。