Réponses:
En fait, il y a un moyen!
(comment
(defn hey []
("Hey there!"))
Check me out!
)
Emballez simplement vos commentaires dans (commentaire ..) :)
S'amuser!
Clojure prend en charge une #_
macro de lecteur qui ignore complètement le formulaire suivant. Ceci est mentionné sur la page concernant le lecteur Clojure . Il y a aussi la macro de commentaire qui a un effet similaire, mais qui est implémentée différemment.
Les deux éléments ci-dessus exigent que la chose que vous commentez soit une expression S syntaxiquement correcte.
Certains dialectes Lisp ont un commentaire sur plusieurs lignes qui peut contenir du texte arbitraire, mais je n'en vois pas pour Clojure.
*scratch*
tampon, tapez simplement des messages indésirables après ;
;;
ou ;;;
sur plusieurs lignes, placez le curseur sur le premier mot après les points-virgules et appuyez sur Meta-Q
).
Les guillemets doubles (chaîne littérale) permettent d'ajouter du texte arbitraire (pas seulement des formes S appropriées):
(comment "
public class HelloWorld {
public static void main(String[] args) {
System.out.print("Hello, World");
System.out.println();
}
}
")
Hello
, la 3ème forme est le symbole World
et la 4ème forme est une autre chaîne. comment
ignore simplement toutes les formes. Donc, dans l'exemple, nous avons de la chance que l' Hello, World
analyse soit une clojure légale. Cela ne fonctionne pas avec du texte arbitraire. Par exemple, (comment "print("/foo")")
mourra avec l'erreur Invalid token: /foo
.
D'autres exemples sont excellents, je voudrais juste ajouter une autre astuce:
Parfois, vous voulez commenter quelques lignes de code, mais demandez au compilateur de le compiler et de signaler toute erreur (par exemple, un ensemble de commandes dans un espace de noms de niveau supérieur que vous prévoyez d'exécuter plus tard au REPL).
Dans ce cas, j'aime envelopper le code avec (fn [] .....)
ce qui signifie qu'il est toujours compilé, il n'est tout simplement pas appelé.
Voir ce lien: http://en.wikibooks.org/wiki/Clojure_Programming/Tutorials_and_Tips
Vous pouvez créer des commentaires multilignes avec la syntaxe
(comment .....
....)
Dans Emacs, vous pouvez utiliser la commande M-;
(le raccourci pour M-x comment-dwim
). Il commentera ou décommentera toute région marquée de texte / code, donc, tant que votre fonction entière ou votre ensemble de fonctions est inclus dans la région, vous pouvez commenter ou décommenter cette région assez facilement. Le manuel de référence Emacs pour la fonction M-;
peut être trouvé ici .
Il y a plusieurs façons dont je connais:
La première utilise la macro de commentaire : elle n'évalue pas tout le code à l'intérieur du corps du commentaire (mais elle vérifie toujours l'équilibre des parenthèses / crochets). Si vous connaissez votre chemin avec le paredit, cela ne prendra pas beaucoup de temps si vous voulez commenter quelques appels sexuels.
(comment
(println 1))
Cependant, il vérifiera toujours la correspondance des parenthèses. Donc, si vous avez des parenthèses déséquilibrées, votre code ne compilera pas (ce qui donnejava.lang.RuntimeException: EOF while reading
).
Une autre façon consiste à utiliser #_
(aka la macro de suppression): elle supprimera le prochain sexp, ce que je préfère personnellement (plus rapide à taper et normalement je le fais sur sexps lorsque je dois déboguer):
#_(println 1)
Il vérifie également les délimiteurs sans correspondance: donc si vous avez des parenthèses déséquilibrées, il ne se compilera pas non plus.
Enfin, il y a le ;
caractère qui commentera la ligne (similaire à la fonction de commentaire des autres langues) et la compilation l'ignorera complètement. Si vous souhaitez commenter plusieurs lignes, vous devez ajouter toutes les lignes avec; , qui sont normalement un problème, mais généralement les éditeurs de texte le feront pour vous avec une commande après avoir sélectionné plusieurs lignes.
; (println 1)
; (println 1 also won't break
Pour un long bloc de commentaires, les macros #_ ou (commentaire ...) ne fonctionnaient pas de manière propriétaire, puis j'ai fait un bloc de commentaires avec VSCODE (OS X).