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

В чем разница между; а также;; в 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)
4b9b3361

Ответ 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 и никогда не слышал об этом раньше), но этот поток может помочь.