Comment vérifier si un symbole peut être résolu dans l'espace de noms actuel?

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

  •  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?

Était-ce utile?

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
scroll top