tutorial online example clojure

online - clojure vs scala



Comentarios de bloque en Clojure (8)

¿Cómo comento líneas múltiples en Clojure?


Al usar emacs y sidra, hay un comando Mx comment-region que uso a menudo.


Clojure admite una macro #_ reader que omite por completo el siguiente formulario. Esto se menciona en la página sobre el lector Clojure . También está el macro de comentarios que tiene un efecto similar, pero se implementa de manera diferente.

Ambas cosas requieren que lo que estás comentando sea una expresión S sintácticamente correcta.

Algunos dialectos Lisp tienen un comentario de varias líneas que puede contener texto arbitrario, pero no veo uno para Clojure.


En Emacs puedes usar el comando M-; (el atajo para Mx comment-dwim ). Comentará o eliminará comentarios de cualquier región marcada de texto / código, de modo que, siempre que su función completa o conjunto de funciones esté incluida en la región, puede comentar o descomentar esa región con bastante facilidad. El manual de referencia de Emacs para la función M-; se puede encontrar here .


En realidad, hay una manera!

(comment

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

Check me out! )

Solo envuelva sus comentarios en (comentario ...) :)

¡Que te diviertas!


Hay varias formas que sé:

El primero es usar la macro de comment : solo no evalúa todo el código dentro del cuerpo del comentario (pero aún busca paréntesis / paréntesis equilibrados). Si conoce su camino con paredit, no tomará mucho tiempo si quiere comentar algunas llamadas sexp.

(comment (println 1))

Sin embargo, aún se verificará si coinciden los paréntesis. Entonces, si tiene un paréntesis desbalanceado, su código no se compilará (rindiendo java.lang.RuntimeException: EOF while reading ).

Otra forma es usar #_ (también conocido como la macro de descarte): descartará el siguiente sexp, que es la forma que personalmente prefiero (escribir más rápido y normalmente lo hago en sexps cuando tengo que depurar):

#_(println 1)

También busca delimitadores no coincidentes: por lo tanto, si tiene paréntesis desequilibrado, no se compilará también.

Por último, está el ; carácter que comentará la línea (similar a la función de comentario de otros idiomas) y la compilación lo ignorará por completo. Si quiere comentar varias líneas, debe anteponer todas las líneas; , que normalmente son una molestia, pero generalmente los editores de texto lo harán por usted con un comando después de seleccionar varias líneas.

; (println 1) ; (println 1 also won''t break


Las comillas dobles (literal de cadena) permiten agregar texto arbitrario (no solo las formas S adecuadas):

(comment " public class HelloWorld { public static void main(String[] args) { System.out.print("Hello, World"); System.out.println(); } } ")


Otros ejemplos son geniales, solo me gustaría agregar un truco más:

Algunas veces quiere comentar algunas líneas de código, pero aún tiene que compilarlo e informar cualquier error (por ejemplo, un conjunto de comandos en un espacio de nombres de nivel superior que planea ejecutar más adelante en el REPL).

En este caso, me gusta ajustar el código con (fn [] .....) que significa que todavía se compila, simplemente no se llama.