有什么区别;和;;在Clojure代码评论?

时间:2011-02-22 21:29:17

标签: clojure comments marginalia

在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)

7 个答案:

答案 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的观点没有区别。我发现;;;更突出,但这只是我的观点。

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

答案 5 :(得分:5)

在包含clojure-mode的emacs lisp模式中,;;的格式为使用位于行开头的约定,并根据上下文缩进为任何其他行。 ;预计将在一行的末尾使用,因此如果您在行的开头放置一个单分号注释,期望它标记为缩进,则emacs将无法执行您想要的操作。现在的背景。

示例:

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

答案 6 :(得分:1)

我不确定(之前没有使用过Clojure,也从未听说过),但this thread 可能帮助。