阻止在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