web-dev-qa-db-fra.com

Bloquer les commentaires dans Clojure

Comment commenter plusieurs lignes dans Clojure?

116
unj2

En fait, il y a un moyen!


(comment


(defn hey [] ("Hey there!"))


Check me out! )

Enveloppez simplement vos commentaires dans (commentaire ..) :)

S'amuser!

141
Rayne

Clojure prend en charge un #_ macro de lecture qui ignore complètement le formulaire suivant. Ceci est mentionné sur la page concernant le Clojure Reader . Il y a aussi la macro de commentaire qui a un effet similaire, mais qui est implémentée différemment.

Les deux ci-dessus nécessitent que la chose que vous commentez soit autrement 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.

98
Greg Hewgill

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();
    }
}

")
23
Ivan Sviatenko

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 sur le 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é.

17
mikera

Voir ce lien: http://en.wikibooks.org/wiki/Clojure_Programming/Tutorials_and_Tips

Vous pouvez créer des commentaires multilignes avec la syntaxe

(comment .....
    ....)
15
chollida

Lorsque vous utilisez emacs et cidre, il y a une commande M-x comment-region que j'utilise souvent.

9
claj

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, aussi longtemps que votre fonction 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 .

2
MLev

Il y a plusieurs façons que je connais:

La première utilise la macro comment : elle ne fait que pas évaluer tout le code à l'intérieur du corps du commentaire (mais elle vérifie toujours pour parenthèses/parenthèses équilibrées). Si vous connaissez votre chemin avec paredit, cela ne prendra pas beaucoup de temps si vous voulez commenter quelques appels sexp.

(comment 
 (println 1))

Cependant, il vérifiera toujours la correspondance entre parenthèses. Donc, si vous avez des parenthèses déséquilibrées, votre code ne compilera pas (ce qui donne Java.lang.RuntimeException: EOF while reading).

Une autre façon consiste à utiliser #_ (alias la macro de suppression): il supprimera le prochain sexp, ce que je préfère personnellement (plus rapide à taper et normalement je le fais sur sexps quand je dois déboguer):

#_(println 1)

Il vérifie également les délimiteurs inégalés: donc si vous avez des parenthèses déséquilibrées, il ne se compilera pas aussi bien.

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
2
Rodrigo Flores