我知道在Clojure中,我们使用分号 (;) 进行注释,这相当于Java中的双斜杠 (//)。但我不理解为什么还需要使用 #_。 有人可以解释一下吗?它是用来忽略文本的吗?如果是这样的话,它与 ; 有什么不同?
;是一种行注释;它忽略从;到该行末尾的文本。这也意味着,有时在最后一行加注释会导致只有闭合括号的行,通常应避免这种情况。主要用途是为人类编写注释。 #_被称为discard;它忽略下一个表达式,这意味着它不受源文件中换行符的影响。这主要用于快速“切换”代码。您还可以堆叠#_。例如:{#_#_ :a 42}。 请注意,还有一个(comment ...)宏,它会丢弃主体并返回nil;因此,主体必须是“有效的”,建议您不要在可能导致混乱的情况下使用它。这主要用于在源代码或REPL中提供一些“概念证明”,但不应作为ns的一部分运行,或者当您懒得编写适当的测试时运行。
(comment ...)
失败,但#_...
可以通过吗? - Thumbnail(+ (comment 1) 2 3)
vs(+ #_ 1 2 3)
。经验法则:只在ns
的顶层使用注释。 - cfrickcomment
中评估顶级表单内的表达式)。我在开发代码时经常使用RCFs。 - Sean Corfield