有什么区别; 和;; 在Clojure代码注释?

有什么区别;;; 当在Clojure开始评论? 我看到我的文本编辑器以不同的颜色对待它们,所以我认为它们在概念上有所不同。

我也看到, Marginalia对待他们是不同的:

 ; Stripped entirely ;; Appears in text section of marginalia (defn foobar [] ; Appears in code section of marginalia output ;; Again, appears in code section of marginalia output 6) 

就翻译而言,没有什么区别。 考虑到 ; ;; ;;; 和;;;; 作为不同的标题水平。

这是我个人使用的惯例:

;;;; 文件顶级注释,如整个文件/模块/名称空间的描述

;;; 文件中主要代码段(即function组)的文档。

;; 超出文档string的单个函数的文档(例如函数中的algorithm解释)

; 可能在单行上进行联机注释,并可能拖尾一行代码

查看官方描述的含义; vs ;; 在elisp:由于Clojure压头基本相同,所以会同样对待它们。 基本上使用; 如果你正在写一个长长的句子/描述“在边际”,将跨越多行,但应被视为一个单一的实体。 他们的例子是:

 (setq base-version-list ; there was a base (assoc (substring fn 0 start-vn) ; version to which file-version-assoc-list)) ; this looks like ; a subversion 

压头将确保那些保持排列在一起。 相反,如果您想要在彼此旁边制作几个不相关的单行注释,请使用;;

 (let [x 99 ;; as per ticket #425 y "test"] ;; remember to test this (str xy)) ;; TODO actually write this function 

Emacs; 用于行尾注释,如果不是您的意图,将会以令人惊讶的方式缩进。 ;; 不,所以我通常使用;;。

Clojure不在乎 – 任何行被忽略; 到EOL。

我相信CL的传统在使用越来越多的; 以表示更重要的评论/部分。

对语言没有意义。 ; 是一个读者macroscomment也许其他工具parsing他们,但“clojure”内,他们是一样的。

从Clojure的angular度来看没有什么不同。 我发现;; 脱颖而出比一点好; ,但这只是我的意见。

另一方面,Marginalia对待它们的方式是不同的,因为有些时候评论应该保留在代码部分(例如许可证)中,而且这些部分被标记了; 。 这是一个武断的决定,将来可能会改变。

在emacs lisp模式下,包括clojure-mode, ;; 被格式化为在一行的开始处的约定,并且如同任何其他行一样根据上下文缩进。 ; 预计会在一行的末尾使用,所以如果你在一行的开始处加上一个单分号的注释,emacs就不会做你想要的东西,因为它希望它在当前的上下文中缩进。

例:

 (let [foo 1] ;; a comment foo) ; a comment 

我不知道(没有使用Clojure,从来没有听说过这个),但这个线程 可能会有所帮助。