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 で eval すると、この情報が欠落している (NO_SOURCE_PATH) のが面倒です。

于 2013-08-09T13:05:46.700 に答える