0

我一直在玩这个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 如何知道函数所在的行号和命名空间?

4

1 回答 1

0

编译器在评估代码时就知道这一点。这与堆栈跟踪的工作过程相同。

如果您在 repl 中进行评估,则缺少此信息(NO_SOURCE_PATH),这很痛苦。

于 2013-08-09T13:05:46.700 回答