(defn function-name)和clojure中的defn- function-name有什么区别?

时间:2013-01-13 14:44:13

标签: clojure

有人可以向我解释一下吗?我想我明白(defn -main)声明了一个可以被Java识别的主方法,并且如果你将它与带有(:gen-class)的命名空间一起使用,你可以欺骗Java认为clojure是面向对象的但是,如果你只是创建一个像

这样的函数,我无法弄清楚目的是什么

(def- add2     (部分+ 2) )

或(defn-my-function ...)

如果上述假设错误,任何人都可以简单地解释一下或纠正我吗?

**编辑 - 我理解部分函数的作用:)我只是想知道上面和(def add2(partial + 2))之间是否存在差异

1 个答案:

答案 0 :(得分:9)

使用defn-定义的函数无法在定义它们的命名空间之外访问。换句话说,它们是私有

看看source of defn-。此宏评估为defn的调用,并将{:private true}合并到元数据哈希中。