web-dev-qa-db-fra.com

Quelle est la différence entre ; et ;; dans les commentaires de code Clojure?

Quelle est la différence entre ; et ;; lors du démarrage d'un commentaire dans Clojure? Je vois que mon éditeur de texte les colore différemment, donc je suppose qu'il y a théoriquement une différence.

Je vois aussi que Marginalia les traite différemment:

; 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)
65
pauldoo

Il n'y a pas de différence en ce qui concerne l'interprète. Penser à ; ;; ;;; et ;;;; en tant que niveaux de titre différents.

Voici ma convention d'utilisation personnelle:

;;;; Commentaires de haut de fichier, tels qu'une description de l'ensemble du fichier/module/espace de noms

;;; Documentation des principales sections de code (c'est-à-dire des groupes de fonctions) dans le fichier.

;; Documentation pour les fonctions uniques qui s'étend au-delà de la chaîne doc (par exemple, une explication de l'algorithme dans la fonction)

; Commentaires en ligne éventuellement sur une seule ligne, et éventuellement sur une ligne de code

72
G__

Découvrez le description officielle de la signification de ; contre ;; in elisp: puisque le pénétrateur Clojure est fondamentalement le même, il les traitera de la même manière. En gros, utilisez ; si vous écrivez une longue phrase/description "dans les marges" qui s'étendra sur plusieurs lignes mais devrait être considérée comme une seule entité. Leur exemple est:

(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

Le pénétrateur s'assurera que ceux-ci restent alignés les uns à côté des autres. Si, à la place, vous souhaitez faire plusieurs commentaires sur une seule ligne sans lien les uns à côté des autres, utilisez ;;.

(let [x 99 ;; as per ticket #425
      y "test"] ;; remember to test this
  (str x y)) ;; TODO actually write this function
30
amalloy

Emacs; à utiliser pour les commentaires de fin de ligne et se mettra en retrait de manière surprenante si ce n'est pas votre intention. ;; ne le fait pas donc j'utilise habituellement ;;.

Clojure ne se soucie pas - toute ligne est ignorée du; à EOL.

Je crois qu'il y a une tradition en CL d'utiliser un nombre croissant de; pour indiquer les commentaires/sections plus importants.

14
Alex Miller

aucun sens pour la langue. ; est une macro de lecture pour comment peut-être que d'autres outils les analysent mais "à l'intérieur de clojure", ce sont les mêmes.

7
Arthur Ulfeldt

Il n'y a aucune différence du point de vue de Clojure. Je trouve que ;; se démarque un peu mieux que ;, mais ce n'est que mon avis.

Marginalia, d'autre part, les traite différemment car il y a des moments où un commentaire doit rester dans la section de code (par exemple, licence) et ceux-ci sont signalés par ;. Il s'agit d'une décision arbitraire et pourrait changer à l'avenir.

6
fogus

Dans les modes LISP d'emacs, y compris le mode clojure, ;; est formaté avec la convention d'être au début d'une ligne et mis en retrait comme n'importe quelle autre ligne, en fonction du contexte. ; est censé être utilisé à la fin d'une ligne, donc emacs ne fera pas ce que vous voulez si vous mettez un commentaire à un point-virgule au début d'une ligne en espérant qu'il s'aligne sur l'indentation du contexte actuel.

Exemple:

(let [foo 1]
  ;; a comment
  foo) ; a comment
5
rplevy

Je ne suis pas sûr (pas utilisé Clojure et jamais entendu parler de cela auparavant), mais ce fil pourrait aider.

1
Doug