Как проверить, разрешен ли символ в текущем пространстве имен?

StackOverflow https://stackoverflow.com/questions/1412551

  •  06-07-2019
  •  | 
  •  

Вопрос

Я хочу проверить, разрешен ли символ в текущем пространстве имен. Какой канонический способ сделать это?

Это было полезно?

Решение

После повторного просмотра документов API я наткнулся на то, что может быть подходящей функцией:

; Returns the var or Class to which the symbol
; will be resolved in the current namespace, else nil.
  (resolve 'foo)

; see also:
  (ns-resolve *a-namespace* 'foo)

Другие советы

Посмотрите эту страницу . Например,

(ns-map *ns*)

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

(defn resolvable? [sym] 
  (contains? (ns-map *ns*) sym))

Я не знаю, является ли это каноническим способом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top