¿Cómo verificar si un símbolo se puede resolver en el espacio de nombres actual?

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

  •  06-07-2019
  •  | 
  •  

Pregunta

Quiero comprobar si un símbolo se puede resolver en el espacio de nombres actual. ¿Cuál es la forma canónica de hacer esto?

¿Fue útil?

Solución

Después de revisar la documentación de la API una vez más, he encontrado cuál podría ser la función apropiada:

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

Otros consejos

Eche un vistazo a esta página . Por ejemplo

(ns-map *ns*)

le dará un mapa de los enlaces en el espacio de nombres actual. Puede examinar este mapa para decidir si su símbolo es una clave en el mapa,

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

No sé si esta es la forma canónica .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top