如何使clojure函数专用于当前命名空间?

时间:2016-12-15 16:43:42

标签: syntax clojure

我最近遇到过这种形式:

(def ^:private -ns- *ns*)
  • 这是如何使当前文件中的函数专用于命名空间的?
  • 使用此方法可以应用哪些其他类型的访问限制?

2 个答案:

答案 0 :(得分:1)

:private元数据键用于控制变量的可访问性。您可以使用defn-例如

声明私有函数
(defn- foo [x] x)

答案 1 :(得分:0)

没有其他访问限制可以通过元数据应用。

即使这个限制也只是表面级别(var标记为私有,命名空间将从某些调用中省略它)。但是,如果您知道var存在,您仍然可以直接访问var。