当我在Clojure中定义私有函数时,我通常使用-
前缀作为可视指示符,该函数不能在我的命名空间之外使用,例如。
(defn- -name []
(let [formatter (formatter "yyyy-MM-dd-HH-mm-ss-SSSS")]
(format "fixjure-%s" (unparse formatter (now)))))
但-
前缀在使用gen-class
时似乎也是公共方法的惯例。
Clojure社区中是否存在普遍接受的defn-
d函数约定,还是应该使用非前缀名称?
似乎clojure.contrib中的许多代码(可能它安静地使用)使用普通名称作为私有函数,所以也许这是最好的,但我真的很喜欢视觉指示器 - 也许我的C / Perl背景只是太强大! ;)
答案 0 :(得分:44)
没有惯例;视觉指示器在没有内置私人功能概念的语言中很流行。由于Clojure使用defn-
定义的函数在其命名空间之外是不可见的,因此不需要使用uglifier为函数添加前缀;)
那么你做了什么,但是你应该像社区的其他人一样做,只是正常命名!它会让你的生活更轻松。
答案 1 :(得分:23)
我不知道任何命名约定,但您可以附加^:private
元数据标记来定义私有函数。这完全等同于defn-
,但有点清楚,恕我直言。
(defn ^:private foo [])