Answers:
其实有办法!
(comment
(defn hey []
("Hey there!"))
Check me out!
)
只需在(comment ..)中加上您的评论即可:)
玩得开心!
Clojure支持一个#_
reader宏,该宏完全跳过下一个表单。关于Clojure Reader的页面上提到了这一点。还有评论宏,其作用类似,但实现方式不同。
以上两种情况都要求您注释掉的东西在语法上是正确的S表达式。
一些Lisp方言具有多行注释,可以包含任意文本,但是我看不到Clojure的注释。
*scratch*
缓冲区,只需键入一些垃圾后,;
;;
或者;;;
在多行,将光标放在第一个字的分号后,然后按Meta-Q
)。
双引号(字符串文字)允许添加任意文本(不仅是正确的S形式):
(comment "
public class HelloWorld {
public static void main(String[] args) {
System.out.print("Hello, World");
System.out.println();
}
}
")
Hello
,第三种形式是symbol World
,第四种形式是另一个字符串。 comment
只是忽略所有形式。因此,在示例中,我们很幸运地将其Hello, World
解析为合法的伪造品。它不适用于任意文本。例如,(comment "print("/foo")")
将因错误而死亡Invalid token: /foo
。
看到此链接:http : //en.wikibooks.org/wiki/Clojure_Programming/Tutorials_and_Tips
您可以使用语法创建多行注释
(comment .....
....)
我知道多种方法:
第一个是使用注释宏:它不会评估注释主体内的所有代码(但仍会检查括号/括号是否平衡)。如果您知道使用paredit的方式,那么如果要评论几个sexp调用,就不会花费很多时间。
(comment
(println 1))
但是,它仍然会检查括号是否匹配。因此,如果您的括号不平衡,则您的代码将无法编译(java.lang.RuntimeException: EOF while reading
)。
另一种方法是使用#_
(aka丢弃宏):它将丢弃下一个sexp,这是我个人更喜欢的方式(输入速度更快,通常我必须在调试时在sexps上这样做):
#_(println 1)
它还检查不匹配的定界符:因此,如果您的括号不平衡,则也不会编译。
最后,有一个;
字符将注释该行(类似于其他语言的注释功能),并且编译器将完全忽略它。如果要注释多行,则需要在所有行之前添加;。,这通常很麻烦,但通常,文本编辑器会在选择多行后用命令为您完成此操作。
; (println 1)
; (println 1 also won't break
对于较长的注释块,宏#_或(comment ...)不能正常工作,然后我使用VSCODE(OS X)进行了注释块。