Comment vérifier si un symbole peut être résolu dans l'espace de noms actuel?
-
06-07-2019 - |
Question
Je veux vérifier si un symbole peut être résolu dans l'espace de noms actuel. Quelle est la manière canonique de faire cela?
La solution
Après avoir parcouru une fois de plus les documents de l'API, je suis tombé sur une fonction qui pourrait être appropriée:
; 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)
Autres conseils
Jetez un coup d’œil à cette page . Par exemple
(ns-map *ns*)
vous donnera une carte des liaisons dans l’espace de nom actuel. Vous pouvez examiner cette carte pour décider si votre symbole est une clé de la carte,
(defn resolvable? [sym]
(contains? (ns-map *ns*) sym))
Je ne sais pas s'il s'agit de la manière canonique .
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow