Пространство имен Clojure: метод для наблюдения определенных объектов?

Там некоторый путь состоит в том, чтобы видеть то, что было уже определено на clojure сессии (эквивалентный вызову ls ())? Скажем, то, что я создаю несколько объектов:

(def x 1)
(def y 2.2)
(def plus-one (fn [x] (+ x 1)))

Существует ли команда, которая может быть выполнена, чтобы показать мне, что они теперь существуют в пользовательском пространстве имен?

7
задан Shane 6 January 2010 в 14:15
поделиться

2 ответа

Я выполняю все задания в пространстве имен пользователей.

user> (def *foo 10) 
#'user/*foo

; Просматривать все отображения публичных интернов в пространстве имен пользователей.

user> (ns-publics 'user)
{*foo #'user/*foo}

Теперь давайте определим функцию, которая не является публичной

user> (defn- foobar[x]
        (println x)
#'user/foobar

Когда вы вызываете функцию ns-publics. Она не будет показывать foobar-функцию в отображении.

user> (ns-publics 'user)
{*foo #'user/*foo}

Чтобы увидеть внутренние отображения для пространства имен. Используйте (ns-интерны 'ВАШЕ-NAMESPACE)

user> (ns-interns 'user)
{foobar #'user/foobar, *foo #'user/*foo}
17
ответ дан 6 December 2019 в 07:26
поделиться

Может быть, ns-publics ?

Возвращает карту отображения публичного стажера для пространства имён.

или ns-map ?

Возвращает карту всех отображений для пространства имен.


Как я понимаю, нет никакой "глобальной среды", есть только пространства имен. Конечно, какое бы из них вы в данный момент "находитесь", для практических целей выглядит как "глобальное окружение".

7
ответ дан 6 December 2019 в 07:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: