Clojure命名空间:查看已定义对象的方法?

Sha*_*ane 7 clojure

有没有办法看到已经在clojure会话中定义的内容(相当于调用ls())?假设我创建了一些对象:

(def x 1)
(def y 2.2)
(def plus-one (fn [x] (+ x 1)))
Run Code Online (Sandbox Code Playgroud)

是否有一个命令可以运行以显示这些命令现在存在于用户命名空间中?

aat*_*ifh 17

我正在做用户命名空间中的所有分配.

user> (def *foo 10) 
#'user/*foo
Run Code Online (Sandbox Code Playgroud)

;; 查看用户命名空间中的所有公共实习生映射.

user> (ns-publics 'user)
{*foo #'user/*foo}
Run Code Online (Sandbox Code Playgroud)

现在让我们定义一个不公开的函数

user> (defn- foobar[x]
        (println x)
#'user/foobar
Run Code Online (Sandbox Code Playgroud)

当你调用ns-publics函数时.它不会在映射中显示foobar函数.

user> (ns-publics 'user)
{*foo #'user/*foo}
Run Code Online (Sandbox Code Playgroud)

查看命名空间的实习生映射.使用(ns-interns'YOUR-NAMESPACE)

user> (ns-interns 'user)
{foobar #'user/foobar, *foo #'user/*foo}
Run Code Online (Sandbox Code Playgroud)


Car*_*icz 7

也许ns-publics

返回命名空间的公共实习生映射的映射.

还是ns-map

返回命名空间的所有映射的映射.


据我了解,没有"全球环境",只有名称空间.当然,无论你目前"进入"哪一个看起来像一个实际目的的"全球环境".