有什么区别; 和;; 在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,从来没有听说过这个),但这个线程 可能会有所帮助。