¿Cómo verificar si un símbolo se puede resolver en el espacio de nombres actual?
-
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?
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