如何在Clojure中评论多行?
答案 0 :(得分:141)
实际上,有办法!
(comment
(defn hey []
("Hey there!"))
Check me out!
)
只需将你的评论包装在(评论..)中:)
玩得开心!
答案 1 :(得分:97)
Clojure支持#_
阅读器宏,它完全跳过下一个表单。有关Clojure Reader的页面上提到了这一点。还有comment macro具有类似的效果,但实现方式不同。
以上两点都要求你注释掉的东西在语法上是正确的S表达式。
有些Lisp方言有一个多行注释,可以包含任意文本,但我没有看到Clojure。
答案 2 :(得分:23)
双引号(字符串文字)允许添加任意文本(不仅是正确的S形式):
root:
createfile.php
files:
file1.txt
答案 3 :(得分:16)
其他例子很棒,我只想再添加一个技巧:
有时您想要注释掉几行代码,但是仍然让编译器编译并报告任何错误(例如,您计划执行的顶级命名空间中的一组命令后来在REPL)。
在这种情况下,我喜欢用(fn [] .....)
包装代码,这意味着它仍然被编译,它只是不被调用。
答案 4 :(得分:15)
查看此链接: http://en.wikibooks.org/wiki/Clojure_Programming/Tutorials_and_Tips
您可以使用语法
创建多行注释(comment .....
....)
答案 5 :(得分:9)
使用emacs和cider时,我经常使用命令M-x comment-region
。
答案 6 :(得分:2)
在Emacs中,您可以使用命令M-;
(M-x comment-dwim
的快捷方式)。它将评论或取消注释文本/代码的任何标记区域,因此,只要您的整个功能或功能集包含在该区域中,您就可以非常轻松地评论或取消注释该区域。可以找到M-;
函数的Emacs参考手册here。
答案 7 :(得分:2)
我知道有多种方式:
第一个是使用comment宏:只有不评估评论体内的所有代码(但它仍会检查平衡括号/括号)。如果你对paredit了解自己的方式,那么如果你想评论几个性别呼叫,就不会花太多时间。
@RequestMapping(method = RequestMethod.GET, value = "/app/products")
public List<Product> getAllProducts(){
return productService.getAllProducts();}
@RequestMapping(method = RequestMethod.POST, value = "/app/products")
public void addProduct(@RequestBody Product product){
productService.addProduct(product); }
但是,它仍将检查括号匹配。因此,如果您有不平衡的括号,您的代码将无法编译(产生(comment
(println 1))
)。
另一种方法是使用java.lang.RuntimeException: EOF while reading
(又名丢弃宏):它将丢弃下一个性别,这是我个人喜欢的方式(更快打字,通常我在性别调查时就这样做,我必须调试) :
#_
它还检查不匹配的分隔符:所以如果你有不平衡的括号,它也不会编译。
最后,有#_(println 1)
字符将对该行进行注释(类似于其他语言注释功能),编译将完全忽略它。如果要评论多行,则需要在所有行前加上; ,这通常很麻烦,但通常文本编辑器会在选择多行后使用命令为您完成。
;
答案 8 :(得分:0)
对于较长的注释块,宏#_或(注释...)无法正常工作,然后我使用VSCODE(OS X)进行了注释块。