Подтвердить что ты не робот

Частный def в clojure/clojurescript

В Clojure и clojurescript у вас может быть личная версия defn, называемая defn-, но как вы делаете то же самое для def, поскольку def, похоже, не включается?

4b9b3361

Ответ 1

Вы должны добавить пара значений ключа :private true метаданных.

(def ^{:private true} some-var :value)
;; or
(def ^:private some-var :value)

Вторая форма просто короткая для первой.

Ответ 2

Если вы хотите определить, вот как его реализовать

(defmacro def- [item value]
  `(def ^{:private true} ~item ~value)
)

Ответ 3

Стоит отметить, что в настоящее время в ClojureScript не может быть приватное defdefn): https://clojurescript.org/about/differences (под "специальными формами" )

Компиляция не завершится неудачно, но def останется доступным.

Ответ 4

В этой группе google post есть обсуждение этой темы. По-видимому, запрос был рассмотрен. Согласно одному из ответов, defn- считалось, что это не хорошая идея, и решил не увековечивать его с помощью def и других.