2011-01-16 25 views
12

Có cách nào trong clojure để lấy mã của hàm sau khi hàm đã được tải không?lấy mã của hàm clojure

Tức là. mà không làm điều gì đó như [chưa được kiểm tra]

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

Trả lời

7

Bạn có thể lấy nguồn biểu tượng bằng cách sử dụng chức năng clojure.repl/source. Tuy nhiên, điều này chỉ hoạt động nếu var mà biểu tượng quyết định ở trong tệp .clj trên đường dẫn lớp. Ví dụ: bạn không thể thực hiện việc này:

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

hmm. (mexpand-all (chuỗi đọc (nguồn-fn 'foo))) là về những gì tôi muốn –

Các vấn đề liên quan