35

当我在 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 背景太强了!;)

4

2 回答 2

49

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

所以做你想做的事,但你可能应该像社区的其他人一样做,只是正常命名它们!它会让你的生活更轻松。

于 2012-06-01T15:42:41.607 回答
25

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

(defn ^:private foo [])
于 2012-06-01T16:23:52.477 回答