阻止在Clojure的评论

我如何评论Clojure中的多行?

其实有一个办法!

(comment 

(defn hey [](“Hey there!”))

对我进行检查! )

只是包装你的意见(评论..):)

玩的开心!

Clojure支持一个完全跳过下一个表单的#_ readermacros。 这是在关于Clojure Reader的页面上提到的。 也有类似效果的评论macros ,但实现方式不同。

以上两点都要求你注释掉的东西在句法上是正确的Sexpression式。

一些Lisp方言有一个可以包含任意文本的多行注释,但是我没有看到一个用于Clojure的方言。

双引号(string文字)允许添加任意文本(不仅适当的Sforms):

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

看到这个链接: http : //en.wikibooks.org/wiki/Clojure_Programming/Tutorials_and_Tips

您可以使用语法创build多行注释

 (comment ..... ....) 

其他的例子很好,我只想再添加一个技巧:

有时候你想要注释掉几行代码,但是编译器仍然会编译它并报告任何错误 (例如,稍后计划在REPL中执行的顶层命名空间中的一组命令)。

在这种情况下,我喜欢用(fn [] .....)来包装代码,这意味着它仍然被编译,只是不被调用。

当使用emacs和苹果酒时,我经常使用一个命令Mx comment-region

在Emacs中可以使用命令M-;Mx comment-dwim的快捷键)。 它会评论或取消注释任何标记的文本/代码区域,因此,只要您的整个function或function集包含在该区域中,就可以轻松评论或取消注释该区域。 functionM-;的Emacs参考手册M-; 可以在这里find。

我知道有很多种方法:

首先是使用评论macros:它只评估评论体内的所有代码(但它仍然检查平衡括号/括号)。 如果你知道你的方式与paredit,如果你想评论几个sexp电话,它不会花很多时间。

 (comment (println 1)) 

但是,它仍然会检查括号匹配。 所以,如果你有不平衡的括号,你的代码将不会编译( java.lang.RuntimeException: EOF while reading产生java.lang.RuntimeException: EOF while reading )。

另一种方法是使用#_ (又名放弃macros):它将放弃下一个sexp,这是我个人喜欢的方式(更快的types,通常我必须在debugging时在sexps上做到这一点):

 #_(println 1) 

它也检查不匹配的分隔符:所以如果你有不平衡的括号,它也不会编译。

最后,有; 字符将会对该行进行注释(类似于其他语言的注释function),编译将完全忽略它。 如果你想要注释多行,你需要在所有的行前加上; ,这通常是一个麻烦,但通常情况下,文本编辑器会select多行后用命令做到这一点。

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