有什么方法可以查看clojure会话中已经定义了什么(相当于调用ls())?比方说,我创建了几个对象:Clojure命名空间:方法来查看定义的对象?
(def x 1)
(def y 2.2)
(def plus-one (fn [x] (+ x 1)))
有没有可以运行告诉我,这些现在在用户命名空间中的命令?
有什么方法可以查看clojure会话中已经定义了什么(相当于调用ls())?比方说,我创建了几个对象:Clojure命名空间:方法来查看定义的对象?
(def x 1)
(def y 2.2)
(def plus-one (fn [x] (+ x 1)))
有没有可以运行告诉我,这些现在在用户命名空间中的命令?
我正在做用户命名空间中的所有分配。
user> (def *foo 10)
#'user/*foo
;;查看用户命名空间中的所有公共实习生映射。
user> (ns-publics 'user)
{*foo #'user/*foo}
现在,让我们定义一个函数,而不是公共
user> (defn- foobar[x]
(println x)
#'user/foobar
当你调用NS-公众的功能。它不会在映射中显示foobar函数。
user> (ns-publics 'user)
{*foo #'user/*foo}
查看名称空间的实习映射。使用(ns-interns的YOUR-NAMESPACE)
user> (ns-interns 'user)
{foobar #'user/foobar, *foo #'user/*foo}
也许ns-publics
?
返回名称空间的公共实习映射的映射。
or ns-map
?
返回名称空间的所有映射的映射。
据我所知,没有“全球环境,”只有命名空间。当然,无论你现在“在”哪一个看起来像是一个实际用途的“全球环境”。
+1谢谢!这非常有帮助。 – Shane 2010-01-06 14:03:25
哦,这就是'ns-interns'的用处! +1,但我没有投票;) – 2010-01-06 15:28:55