Como verificar se um símbolo é resolvível no espaço de nome atual?

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

  •  06-07-2019
  •  | 
  •  

Pergunta

Quero verificar se um símbolo é resolvível no espaço de nome atual. Qual é a maneira canônica de fazer isso?

Foi útil?

Solução

Depois de examinar os documentos da API mais uma vez, tropecei no que poderia ser a função apropriada:

; 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)

Outras dicas

Dar uma olhada em esta página. Por exemplo

(ns-map *ns*)

dará a você um mapa das ligações no espaço de nome atual. Você pode examinar este mapa para decidir se seu símbolo é uma chave no mapa,

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

Eu não sei se este é o canônico caminho.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top