pau*_*doo 65 comments clojure marginalia
在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)
Run Code Online (Sandbox Code Playgroud)
G__*_*G__ 73
就翻译而言,没有区别.考虑到 ; ;; ;;; 和;;;; 作为不同的标题水平.
这是我的个人使用惯例:
;;;; 文件顶级注释,例如整个文件/模块/命名空间的描述
;;; 文件中主要代码部分(即函数组)的文档.
;; 超出doc字符串的单个函数的文档(例如函数内算法的解释)
; 内联注释可能在一行上,并可能拖尾一行代码
ama*_*loy 30
查看elisp 中vs 的含义的官方说明:由于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
Run Code Online (Sandbox Code Playgroud)
压头将确保它们彼此相邻排列.相反,如果您想要将几个不相关的单行注释彼此相邻,请使用;;
.
(let [x 99 ;; as per ticket #425
y "test"] ;; remember to test this
(str x y)) ;; TODO actually write this function
Run Code Online (Sandbox Code Playgroud)
Ale*_*ler 14
Emacs; 用于行尾注释,如果不是你的意图,将以令人惊讶的方式缩进.;; 不这样我通常使用;;.
Clojure不关心 - 任何一行都被忽略了; 到了EOL.
我相信在CL中有一种使用越来越多的传统; 表示更重要的评论/部分.
与Clojure的观点没有区别.我发现它;;
比一个好一点;
,但这只是我的意见.
另一方面,Marginalia对待它们的方式不同,因为有时评论应该保留在代码部分(例如许可证)中,并且标记为;
.这是一个武断的决定,将来可能会发生变化.
在emacs中,包括clojure-mode在内的lisp模式的;;
格式是使用位于行开头的约定,并根据上下文缩进为任何其他行.;
预计将在一行的末尾使用,因此如果您在行的开头放置一个单分号注释,期望它选择缩进到当前上下文的缩进,则emacs将无法执行您想要的操作.
例:
(let [foo 1]
;; a comment
foo) ; a comment
Run Code Online (Sandbox Code Playgroud)