В чем разница между; а также;; в Clojure комментарии коментариев?
В чем разница между ;
и ;;
при запуске комментария в Clojure? Я вижу, что текстовый редактор окрашивает их по-разному, поэтому я предполагаю, что существует определенная разница.
Я также вижу, что Marginalia рассматривает их по-разному:
; Stripped entirely
;; Appears in text section of marginalia
(defn foobar []
; Appears in code section of marginalia output
;; Again, appears in code section of marginalia output
6)
Ответы
Ответ 1
Нет никакой разницы в том, что касается интерпретатора. Думать о;;;;;; а также;;;; как разные уровни заголовков.
Вот мое личное соглашение о пользовании:
;;;; Замечания верхнего уровня, такие как описание всего файла/модуля/пространства имен
;;; Документация для основных разделов кода (т.е. Групп функций) в файле.
;; Документация для отдельных функций, которая выходит за пределы строки документа (например, объяснение алгоритма внутри функции)
; Встроенные комментарии возможно в одной строке и, возможно, вывод строки кода
Ответ 2
Ознакомьтесь с официальным описанием значения ;
vs ;;
в elisp: поскольку индентор Clojure в основном тот же, он будет обрабатывать их аналогичным образом. В принципе, используйте ;
, если вы пишете длинное предложение/описание "на полях", которое будет охватывать несколько строк, но должно рассматриваться как единое целое. Их пример:
(setq base-version-list ; there was a base
(assoc (substring fn 0 start-vn) ; version to which
file-version-assoc-list)) ; this looks like
; a subversion
Индентор будет следить за тем, чтобы те оставались рядом друг с другом. Если вместо этого вы хотите сделать несколько несвязанных однострочных комментариев рядом друг с другом, используйте ;;
.
(let [x 99 ;; as per ticket #425
y "test"] ;; remember to test this
(str x y)) ;; TODO actually write this function
Ответ 3
Emacs; которые будут использоваться для комментариев в конце строки и будут отступать неожиданными способами, если это не ваше намерение.;; не так я обычно использую;;.
Clojure не волнует - любая строка игнорируется из; до EOL.
Я считаю, что в CL существует традиция использования все большего числа; чтобы указать более важные комментарии/разделы.
Ответ 4
нет значения для языка. ;
- это макрос читателя для comment
возможно, другие инструменты анализируют их, но "внутри clojure" они одинаковы.
Ответ 5
Нет никакой разницы в Clojure -перспективе. Я считаю, что ;;
выделяется немного лучше, чем ;
, но это только мое мнение.
Marginalia, с другой стороны, рассматривает их по-разному, потому что есть моменты, когда комментарий должен оставаться в разделе кода (например, лицензии), и те помечены как ;
. Это произвольное решение и может измениться в будущем.
Ответ 6
В emacs lisp режимы, включая clojure -mode, ;;
форматируется с соглашением быть в начале строки и отступом, как и любая другая строка, на основе контекста. Ожидается, что ;
будет использоваться в конце строки, поэтому emacs не будет делать то, что вы хотите, если вы поместите комментарий с одной точкой с запятой в начале строки, ожидая, что она будет вставляться в отступ для текущего контекста.
Пример:
(let [foo 1]
;; a comment
foo) ; a comment
Ответ 7
Я не уверен (не используется Clojure и никогда не слышал об этом раньше), но этот поток может помочь.