Clojure: Как получить метаданные функций?

Существует, третья опция, не покупают и не создают. Существуют груды хороших свободных там. Например:

, Прокручивающий Ваше собственное средство отслеживания ошибки для любого использования кроме изучения, не является хорошим использованием времени.

Другие ссылки:

11
задан Community 23 May 2017 в 12:14
поделиться

2 ответа

Вы ищете meta и ns-resolve .

user=> (let [fun "map"] (meta (ns-resolve 'clojure.core (symbol fun))))
{:ns #<Namespace clojure.core>, :name map, :file "clojure/core.clj", :line 1705, :arglists ([f coll] [f c1 c2] [f c1 c2 c3] [f c1 c2 c3 & colls]), :doc "Returns a lazy sequence consisting of the result of applying f to the\n  set of first i tems of each coll, followed by applying f to the set\n  of second items in each coll, until any one of the colls is\n  exhausted.  Any remaining items in other colls are ignored. Function\n  f should accept number-of-colls arguments."}
9
ответ дан 3 December 2019 в 09:20
поделиться

Технически функции в настоящее время не могут иметь метаданные в Clojure:

http://www.assembla.com/spaces/clojure/tickets/94-GC--Issue-90---% 09-Support-metadata-on-fns

Однако переменные, которые связаны с функциями, могут, и похоже, что это то, что вы обнаружите с помощью ns-resolve. (meta last-func) тоже подойдет. Поскольку last-func - это сама переменная, ^ # 'last-func (которая является сокращением для (meta (var (quote last-func)))) имеет избыточное разыменование var.

3
ответ дан 3 December 2019 в 09:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: