Antworten:
Eigentlich gibt es einen Weg!
(comment
(defn hey []
("Hey there!"))
Check me out!
)
Wickeln Sie einfach Ihre Kommentare in (Kommentar ..) :)
Habe Spaß!
Clojure unterstützt ein #_
Lesemakro, das das nächste Formular vollständig überspringt. Dies wird auf der Seite über den Clojure Reader erwähnt . Es gibt auch das Kommentarmakro, das einen ähnlichen Effekt hat, aber anders implementiert ist.
Beides erfordert, dass das, was Sie auskommentieren, ansonsten ein syntaktisch korrekter S-Ausdruck ist.
Einige Lisp-Dialekte haben einen mehrzeiligen Kommentar, der beliebigen Text enthalten kann, aber ich sehe keinen für Clojure.
*scratch*
Puffer einfach etwas Junk nach ;
;;
oder ;;;
in mehreren Zeilen ein, setzen Sie den Cursor auf das erste Wort nach den Semikolons und drücken Sie Meta-Q
).
Doppelte Anführungszeichen (String-Literal) ermöglichen das Hinzufügen von beliebigem Text (nicht nur richtige S-Formulare):
(comment "
public class HelloWorld {
public static void main(String[] args) {
System.out.print("Hello, World");
System.out.println();
}
}
")
Hello
, die dritte Form ist das Symbol World
und die vierte Form ist eine weitere Zeichenfolge. comment
ignoriert einfach alle Formen. In dem Beispiel haben wir das Glück, dass es Hello, World
als legale Clojure analysiert wird. Es funktioniert nicht mit beliebigem Text. Zum Beispiel (comment "print("/foo")")
wird mit dem Fehler sterben Invalid token: /foo
.
Andere Beispiele sind großartig, ich möchte nur noch einen Trick hinzufügen:
Manchmal möchten Sie einige Codezeilen auskommentieren, aber dennoch vom Compiler kompilieren lassen und Fehler melden (z. B. eine Reihe von Befehlen in einem Namespace der obersten Ebene, die Sie später auf der REPL ausführen möchten).
In diesem Fall möchte ich den Code umschließen, (fn [] .....)
was bedeutet, dass er immer noch kompiliert wird und einfach nicht aufgerufen wird.
Siehe diesen Link: http://en.wikibooks.org/wiki/Clojure_Programming/Tutorials_and_Tips
Sie können mehrzeilige Kommentare mit der Syntax erstellen
(comment .....
....)
In Emacs können Sie den Befehl M-;
(die Verknüpfung für M-x comment-dwim
) verwenden. Es markiert oder kommentiert jeden markierten Bereich von Text / Code. Solange Ihre gesamte Funktion oder Ihr Funktionssatz in der Region enthalten ist, können Sie diesen Bereich ganz einfach kommentieren oder auskommentieren. Das Emacs-Referenzhandbuch für die Funktion M-;
finden Sie hier .
Ich kenne mehrere Möglichkeiten:
Zuerst wird das Kommentarmakro verwendet : Es wertet nur nicht den gesamten Code im Kommentartext aus (es wird jedoch weiterhin nach ausgewogenen Klammern / Klammern gesucht). Wenn Sie sich mit paredit auskennen, wird es nicht lange dauern, bis Sie ein paar Sexp-Anrufe kommentieren möchten.
(comment
(println 1))
Es wird jedoch weiterhin geprüft, ob die Klammern übereinstimmen. Wenn Sie also eine unausgeglichene Klammer haben, wird Ihr Code nicht kompiliert (ergibt java.lang.RuntimeException: EOF while reading
).
Eine andere Möglichkeit ist die Verwendung #_
(auch bekannt als das Makro zum Verwerfen): Es wird das nächste Sexp verwerfen, was ich persönlich bevorzuge (schneller zu tippen und normalerweise mache ich das auf Sexps, wenn ich debuggen muss):
#_(println 1)
Es wird auch nach nicht übereinstimmenden Trennzeichen gesucht. Wenn Sie also eine unausgeglichene Klammer haben, wird es auch nicht kompiliert.
Schließlich gibt es das ;
Zeichen, das die Zeile kommentiert (ähnlich wie die Kommentarfunktion in anderen Sprachen), und die Kompilierung ignoriert sie vollständig. Wenn Sie mehrere Zeilen kommentieren möchten, müssen Sie allen Zeilen voranstellen. Dies ist normalerweise ein Ärger, aber normalerweise erledigen Texteditoren dies mit einem Befehl für Sie, nachdem Sie mehrere Zeilen ausgewählt haben.
; (println 1)
; (println 1 also won't break
Für einen langen Kommentarblock funktionierten die Makros #_ oder (Kommentar ...) nicht so proprietär, dann habe ich einen Kommentarblock mit VSCODE (OS X) erstellt.