在Clojure中发表评论时,;
和;;
之间有什么区别?我看到我的text editor对它们的颜色不同,所以我假设在概念上存在一些差异。
我也看到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)
答案 0 :(得分:72)
就翻译而言,没有区别。考虑到 ; ;; ;;;和;;;;作为不同的标题水平。
这是我的个人使用惯例:
;;;;文件顶级注释,例如整个文件/模块/命名空间的描述
;;;文件中主要代码部分(即函数组)的文档。
;;超出doc字符串的单个函数的文档(例如函数中算法的解释)
内联注释可能在一行上,并可能拖尾一行代码
答案 1 :(得分:28)
在elisp中查看;
vs ;;
含义的official description:由于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 x y)) ;; TODO actually write this function
答案 2 :(得分:14)
Emacs;用于行尾注释,如果不是你的意图,将以令人惊讶的方式缩进。 ;;不这样我通常使用;;。
Clojure并不关心 - 任何一行都会被忽略;到了EOL。
我相信CL中有越来越多的传统;表示更重要的评论/部分。
答案 3 :(得分:7)
对语言没有意义。 ;
是comment
的读者宏
也许其他工具会解析它们,但“在clojure中”它们是相同的。
答案 4 :(得分:6)
与Clojure的观点没有区别。我发现;;
比;
更突出,但这只是我的观点。
;
。这是一个武断的决定,将来可能会改变。
答案 5 :(得分:5)
在包含clojure-mode的emacs lisp模式中,;;
的格式为使用位于行开头的约定,并根据上下文缩进为任何其他行。 ;
预计将在一行的末尾使用,因此如果您在行的开头放置一个单分号注释,期望它标记为缩进,则emacs将无法执行您想要的操作。现在的背景。
示例:
(let [foo 1]
;; a comment
foo) ; a comment
答案 6 :(得分:1)
我不确定(之前没有使用过Clojure,也从未听说过),但this thread 可能帮助。