Раньше это было useful utility called show в clojure.contrib. Теперь, что он устарел, есть ли эквивалент?Эквивалент шоу clojure.contrib?
Спасибо!
Раньше это было useful utility called show в clojure.contrib. Теперь, что он устарел, есть ли эквивалент?Эквивалент шоу clojure.contrib?
Спасибо!
Деконструкция show
, чтобы быть более «простыми», делая доступными различные фрагменты повторно используемой функциональности, обсуждался Стюартом Хэллоуэйном в talk, который он дает на простоте clojure.
Полученный код использует clojure.reflect/reflect
и clojure.pprint/print-table
и стандартный Clojure filter
:
(require 'clojure.reflect)
(require 'clojure.pprint)
(->> (clojure.reflect/reflect java.lang.String)
:members
(filter #(.startsWith (str (:name %)) "last"))
(clojure.pprint/print-table))
Я отсылаю вас к Where Did Clojure.Contrib Go документ, в котором говорится о clojure.contrib.repl-утилитами:
мигрировали в clojure.repl и clojure.java.javadoc. показать функциональность, похожую на clojure.reflect/reflection.
Документация API clojure.reflect является here и примеры clojuredocs.org являются here.
Одна из интересных вещей о 'show' является то, что он работал на случаях, а также по типам (см HTTPS://stackoverflow.com/questions/5821286). Знаете ли вы о каких-либо примерах (например, в Clojuredocs или блогах), которые показывают, как определить значения переменных экземпляра экземпляра класса Java? Пространства имен clojure.repl, похоже, недостаточно (https://clojure.github.io/clojure/clojure.repl-api.html) –
clojure.reflect/reflection выше построен поверх API отражения Java, поэтому он должен делать то, что вам нужно. Часть разрыва «шоу» заключалась в том, что он делал слишком много. Функциональность отражения была доступна в пространстве имен clojure.reflect (а не в repl-api). Попробуйте приведенный выше пример с экземпляром строки вместо типа - (clojure.reflect/reflection "экземпляр строки") –