【问题标题】:What is the difference between (defn function-name) and (defn- function-name in clojure?clojure 中的 (defn function-name) 和 (defn- function-name) 有什么区别?
【发布时间】:2012-12-27 14:14:09
【问题描述】:

谁能给我解释一下?我想我理解 (defn -main) 声明了一个 Java 可以识别的 main 方法,如果你将它与带有 (:gen-class) 的命名空间一起使用,你可以欺骗 Java 认为 clojure 是面向对象的,但是如果您只是创建一个类似

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

(def-add2 (部分 + 2) )

or (defn-my-function...)

如果上述假设有误,谁能简单解释一下或纠正我?

**Edit - 我了解偏函数的作用:) 我只是想知道上面和 (def add2 (partial + 2)) 之间是否有区别

【问题讨论】:

    标签: clojure


    【解决方案1】:

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

    看看source of defn-。此宏计算为对 defn 的调用,其中 {:private true} 合并到元数据哈希中。

    【讨论】:

    • 太好了,感谢您的快速回复(12分钟接受答复)
    • 更好的是,我没有想到使用 (source),因为我认为它会给我 (defn) 的来源,并且 - 是一个特殊的运算符
    猜你喜欢
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 2011-04-09
    • 2012-03-25
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 2012-07-12
    相关资源
    最近更新 更多