Помещение строк данных в переменные данных считается ли это идиоматическим? - PullRequest
15 голосов
/ 15 октября 2010

Итак, я определил некоторые переменные для хранения данных о состоянии в моем коде clojure. Я только что обнаружил, что могу добавить строку документации к этим переменным, например:

(def ^{:doc "Documentation for *my-var*"}
        *my-var*)

Это позволяет мне звонить (doc *my-var*) в REPL. Это кажется правильным и полезным делом, но это не похоже на обычную практику в (ограниченном) коде, который я прочитал.

Это считается идиоматическим замыканием?

Ответы [ 2 ]

11 голосов
/ 23 марта 2014

Начиная с clojure 1.3, def допускает необязательную строку документации.

(def *my-var*
  "My var does cool things (it really doesn't)."
  nil)
11 голосов
/ 15 октября 2010

Также используется в пространствах имен Clojure (например, clojure.pprint):

(def
 ^{:doc "The base to use for printing integers and rationals."
   :added "1.2"}
 *print-base* 10)

Вы можете не использовать вспомогательный макрос из clojure.contrib.def:

(defvar *my-var*
  nil
  "Documentation for *my-var*")
...