Risposte:
In realtà, c'è un modo!
(comment
(defn hey []
("Hey there!"))
Check me out!
)
Metti i tuoi commenti in (comment ..) :)
Divertiti!
Clojure supporta una #_
macro del lettore che salta completamente il modulo successivo. Questo è menzionato nella pagina sul Clojure Reader . C'è anche la macro di commento che ha un effetto simile, ma è implementata in modo diverso.
Entrambi i precedenti richiedono che la cosa che stai commentando sia altrimenti un'espressione S sintatticamente corretta.
Alcuni dialetti Lisp hanno un commento su più righe che può contenere testo arbitrario, ma non ne vedo uno per Clojure.
*scratch*
buffer, digita semplicemente un po 'di spazzatura dopo ;
;;
o ;;;
su più righe, posiziona il cursore sulla prima parola dopo il punto e virgola e premi Meta-Q
).
Le virgolette doppie (stringa letterale) consentono di aggiungere testo arbitrario (non solo le forme S appropriate):
(comment "
public class HelloWorld {
public static void main(String[] args) {
System.out.print("Hello, World");
System.out.println();
}
}
")
Hello
, la terza forma è il simbolo World
e la quarta forma è un'altra stringa. comment
ignora solo tutte le forme. Quindi nell'esempio siamo fortunati che Hello, World
analizza come chiusura legale. Non funziona con testo arbitrario. Ad esempio, (comment "print("/foo")")
morirà con l'errore Invalid token: /foo
.
Altri esempi sono fantastici, vorrei solo aggiungere un altro trucco:
A volte si desidera commentare alcune righe di codice, ma è comunque necessario che il compilatore lo compili e segnali eventuali errori (ad esempio un insieme di comandi in uno spazio dei nomi di primo livello che si prevede di eseguire in seguito nella REPL).
In questo caso mi piace avvolgere il codice con il (fn [] .....)
che significa che viene comunque compilato, semplicemente non viene chiamato.
Vedi questo link: http://en.wikibooks.org/wiki/Clojure_Programming/Tutorials_and_Tips
È possibile creare commenti su più righe con la sintassi
(comment .....
....)
In Emacs puoi usare il comando M-;
(la scorciatoia per M-x comment-dwim
). Commenterà o rimuoverà il commento da qualsiasi regione di testo / codice contrassegnata, quindi, fintanto che l'intera funzione o insieme di funzioni è inclusa nella regione, puoi commentare o rimuovere il commento da quella regione abbastanza facilmente. Il manuale di riferimento di Emacs per la funzione M-;
può essere trovato qui .
Ci sono diversi modi che conosco:
Il primo è usare la macro di commento : solo non valuta tutto il codice all'interno del corpo del commento (ma controlla ancora per parentesi / parentesi equilibrate). Se conosci la tua strada con paredit, non ci vorrà molto tempo se vuoi commentare alcune chiamate sexp.
(comment
(println 1))
Tuttavia, controllerà comunque la corrispondenza tra parentesi. Quindi, se hai parentesi sbilanciate, il codice non verrà compilato (cedendo java.lang.RuntimeException: EOF while reading
).
Un altro modo è usare #_
(ovvero la macro di scarto): scarterà il prossimo sexp, che è il modo che preferisco personalmente (più veloce da digitare e normalmente lo faccio su sexps quando devo eseguire il debug):
#_(println 1)
Controlla anche la presenza di delimitatori non corrispondenti: quindi se hai parentesi sbilanciate, non verrà compilato.
Infine, c'è il ;
carattere che commenterà la riga (simile alla funzionalità di commento di altre lingue) e la compilazione la ignorerà completamente. Se vuoi commentare più righe, devi anteporre a tutte le righe; , che normalmente sono una seccatura, ma di solito gli editor di testo lo faranno per te con un comando dopo aver selezionato più righe.
; (println 1)
; (println 1 also won't break
Per un lungo blocco dei commenti, le macro #_ o (commento ...) non funzionavano in modo proprietario, quindi ho fatto il blocco dei commenti con VSCODE (OS X).