Odpowiedzi:
Właściwie jest sposób!
(comment
(defn hey []
("Hey there!"))
Check me out!
)
Po prostu zawiń swoje komentarze w (komentarz ..) :)
Baw się dobrze!
Clojure obsługuje #_
makro czytnika, które całkowicie pomija następny formularz. Jest to wspomniane na stronie o Clojure Reader . Istnieje również makro komentarza, które ma podobny efekt, ale jest inaczej zaimplementowane.
Oba powyższe wymagają, aby rzecz, którą komentujesz, była inaczej składniowo poprawnym wyrażeniem S.
Niektóre dialekty Lisp mają wieloliniowy komentarz, który może zawierać dowolny tekst, ale nie widzę takiego dla Clojure.
*scratch*
buforze po prostu wpisz jakieś śmieci po ;
;;
lub ;;;
w wielu wierszach, ustaw kursor na pierwszym słowie po średniku i naciśnij Meta-Q
).
Podwójne cudzysłowy (literał ciągu znaków) pozwalają na dodanie dowolnego tekstu (nie tylko odpowiednich formularzy S):
(comment "
public class HelloWorld {
public static void main(String[] args) {
System.out.print("Hello, World");
System.out.println();
}
}
")
Hello
, trzecia forma to symbol World
, a czwarta forma to kolejny ciąg. comment
po prostu ignoruje wszystkie formularze. W tym przykładzie mamy szczęście, że Hello, World
jest to traktowane jako prawne zamknięcie. Nie działa z dowolnym tekstem. Na przykład (comment "print("/foo")")
umrze z błędem Invalid token: /foo
.
Inne przykłady są świetne, chciałbym tylko dodać jeszcze jedną sztuczkę:
Czasami chcesz skomentować kilka wierszy kodu, ale nadal kompilator kompiluje go i zgłasza wszelkie błędy (np. Zestaw poleceń w przestrzeni nazw najwyższego poziomu, którą planujesz wykonać później w REPL).
W tym przypadku lubię zawijać kod, (fn [] .....)
co oznacza, że nadal jest kompilowany, po prostu nie jest wywoływany.
Zobacz ten link: http://en.wikibooks.org/wiki/Clojure_Programming/Tutorials_and_Tips
Za pomocą składni można tworzyć komentarze wielowierszowe
(comment .....
....)
W Emacsie możesz użyć polecenia M-;
(skrótu do M-x comment-dwim
). Spowoduje to skomentowanie lub odkomentowanie dowolnego zaznaczonego obszaru tekstu / kodu, więc jeśli cała funkcja lub zestaw funkcji jest uwzględniona w regionie, możesz dość łatwo skomentować lub odkomentować ten region. Podręcznik referencyjny Emacsa dla tej funkcji M-;
można znaleźć tutaj .
Znam wiele sposobów:
Pierwszym z nich jest użycie makra komentarza : nie ocenia ono tylko całego kodu wewnątrz treści komentarza (ale nadal sprawdza, czy nawiasy są wyważone). Jeśli znasz swój sposób na paredit, nie zajmie to dużo czasu, jeśli zechcesz skomentować kilka telefonów z seksem.
(comment
(println 1))
Jednak nadal będzie sprawdzać dopasowanie w nawiasach. Więc jeśli masz niezrównoważony nawias, kod nie będzie się kompilował (dawał java.lang.RuntimeException: EOF while reading
).
Innym sposobem jest użycie #_
(aka discard makro): odrzuci następny sexp, co osobiście wolę (szybsze pisanie i normalnie robię to na sexpsach, kiedy muszę debugować):
#_(println 1)
Sprawdza również niedopasowane ograniczniki: więc jeśli masz niezrównoważony nawias, nie będzie się również kompilował.
Wreszcie, istnieje ;
znak, który skomentuje linię (podobnie jak funkcja komentarzy w innych językach), a kompilacja całkowicie ją zignoruje. Jeśli chcesz skomentować wiele wierszy, musisz poprzedzić wszystkie wiersze znakiem; , które zwykle są kłopotliwe, ale zazwyczaj edytory tekstu robią to za Ciebie za pomocą polecenia po zaznaczeniu wielu wierszy.
; (println 1)
; (println 1 also won't break
W przypadku długiego bloku komentarzy, makra #_ lub (komentarz ...) nie działały tak, jak zastrzeżono, wtedy zrobiłem blok komentarza z VSCODE (OS X).