Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有命名私有函数的Clojure约定?_Clojure_Naming Conventions - Fatal编程技术网

是否有命名私有函数的Clojure约定?

是否有命名私有函数的Clojure约定?,clojure,naming-conventions,Clojure,Naming Conventions,当我在Clojure中定义私有函数时,我通常使用-前缀作为视觉指示器,表明该函数不能在我的命名空间之外使用,例如 (defn- -name [] (let [formatter (formatter "yyyy-MM-dd-HH-mm-ss-SSSS")] (format "fixjure-%s" (unparse formatter (now))))) 但是-前缀似乎也是使用gen类时公共方法的惯例 Clojure社区中的defn-'d函数是否有任何公认的约定,或者我应该简单地使

当我在Clojure中定义私有函数时,我通常使用
-
前缀作为视觉指示器,表明该函数不能在我的命名空间之外使用,例如

(defn- -name []
  (let [formatter (formatter "yyyy-MM-dd-HH-mm-ss-SSSS")]
    (format "fixjure-%s" (unparse formatter (now)))))
但是
-
前缀似乎也是使用
gen类时公共方法的惯例

Clojure社区中的
defn-
'd函数是否有任何公认的约定,或者我应该简单地使用不带前缀的名称


clojure.contrib中的许多代码(祝它安息)对私有函数使用普通名称,所以这可能是最好的,但我真的很喜欢视觉指示器——也许我的C/Perl背景太强了!;)

没有约定;视觉指示器在没有内置私有函数概念的语言中很普遍。由于Clojure用
defn-
定义的函数在其名称空间之外不可见,因此不需要在函数前面加上uglifier;)


所以,做你想做的,但你可能想做的只是社区的其他人做的,只是正常命名他们!这将使您的生活更轻松。

我不知道任何命名约定,但您可以附加
^:private
元数据标签来定义私有函数。这完全等同于
defn-
,但更清楚一点,IMHO

(defn ^:private foo [])

要对当前名称空间执行此操作:
(def^:private-ns-*ns*)
多么漂亮的语言设计!