我怎样才能 public 在 Clojure 中公开我的命名空间的一些函数?
How can I just public expose some functions of my namespace in Clojure?
我有以下代码:
(ns mylib-clojure.core)
(defn foo2 [x]
(inc x))
(defn foo1 [x]
(foo2 x))
函数 foo2
仅在 foo1
内部使用。假设我不想公开函数 foo2
,所以我为命名空间的用户提供了一个较小的 API。是否可以使 foo2
"private"?
您可以将 foo2 声明为 "private":
(defn- foo2 [x] (inc x))
在mylib-clojure.core
外是看不到的。 defn-
的文档可以在 here 中找到。另一种选择是在 foo1
:
中声明它
(defn foo1 [x]
(let [foo2 (fn [x] (inc x))]
(foo2 x)))
我有以下代码:
(ns mylib-clojure.core)
(defn foo2 [x]
(inc x))
(defn foo1 [x]
(foo2 x))
函数 foo2
仅在 foo1
内部使用。假设我不想公开函数 foo2
,所以我为命名空间的用户提供了一个较小的 API。是否可以使 foo2
"private"?
您可以将 foo2 声明为 "private":
(defn- foo2 [x] (inc x))
在mylib-clojure.core
外是看不到的。 defn-
的文档可以在 here 中找到。另一种选择是在 foo1
:
(defn foo1 [x]
(let [foo2 (fn [x] (inc x))]
(foo2 x)))