모든 내장 Clojure 함수의 메타 데이터를 가져 오려고합니다.Clojure : 함수의 메타 데이터를 얻는 방법?
previous question에서 나는 ^#'func_name
(var 개체의 메타 데이터 가져 오기)과 같은 것을 사용하여이 작업을 수행 할 수 있음을 알게되었습니다. 그러나 func-name이 미리 알려지지 않은 곳에서는 프로그래밍 방식으로 처리하지 못했습니다. 이 방법을
user=> (use 'clojure.contrib.ns-utils)
nil
user=> (def last-func (last (vars clojure.core)))
user=> last-func
zipmap
;The real metadata (zipmap is hardcoded)
user=> ^#'zipmap
{:ns #<Namespace clojure.core>, :name zipmap, :file "clojure/core.clj", :line 1661, :arglists ([keys vals]), :doc "Returns a map .."}
;Try to get programmatically, but get shit
user=> ^#'last-func
{:ns #<Namespace user>, :name last-func, :file "NO_SOURCE_PATH", :line 282}
을 수행 할 수 있습니다 clojure.core의 마지막 함수의 메타 데이터를 얻으려고 노력 예를 들어
? 나는 이미 수많은 변주를 시도했지만 그 트릭을 수행하지는 않습니다.
고마워요! 사실,^(ns-resolve 'clojure.core last-func)가 이것을 실현합니다. – GabiMe
^^ (intern'clojure.core last-func) – GabiMe
이것은 위험한 해결책입니다.
기호의 출처는 신중해야합니다. 저는 여전히 인턴을 통해 ns-resolve를 권합니다. – kotarak