我正在查看他们使用的库代码#_。遍历多个参考文献后,我了解到#_是丢弃符号,它告诉读者忽略接下来发生的一切。
为什么首先需要它?如果我们有一些要忽略的东西,为什么我们不能删除它或只发表评论呢?#_过度评论有什么意义?
当调试或编写一些更改的代码时,它非常方便。假设您有一些强大的功能,并且想要对其进行注释。您有几种选择:
您可以使用行注释:
; (defn some-huge-thing []
; ... Many lines)
Run Code Online (Sandbox Code Playgroud)
但这很痛苦,除非您的IDE有注释快捷方式,即使这样做也需要一些工作。另外,我发现大多数IDE对注释快捷方式的处理效果都不理想。有时,他们只是添加注释的另一个“层”,而不是删除现有的注释。如果只想注释掉函数的一小部分,则行注释也无济于事,因为它们不是上下文相关的。
您可以使用comment:
(comment
(defn some-huge-thing []
... Many lines))
Run Code Online (Sandbox Code Playgroud)
但是我个人不喜欢,comment因为在这里,它需要嵌套整个内容,或者违反Parinfer只是为了添加评论。就像@amalloy指出的那样,它最终会扩展为nil,因此只能在杂散nil不会影响任何情况的情况下使用。
...或者,您可以使用#_:
#_
(defn some-huge-thing []
... Many lines)
Run Code Online (Sandbox Code Playgroud)
它根本不需要更改功能。只需敲两次键,就可以消除两次键。它也不会评估为nil; 它只是被忽略。这意味着您可以使用它来例如在函数调用中注释掉参数。
#_在尝试不同的实现以及试图隔离错误时,我个人经常使用。它会导致所有在其后立即出现的事件都被忽略,因此控制执行和不执行非常容易。