2009-09-11 9 views

Répondre

4

Après avoir pris connaissance de l'API docs une fois de plus, je suis tombé sur ce qui pourrait être la fonction 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) 
+1

Comment faites-vous la différence entre un symbole non lié et un symbole lié à zéro? – Jonas

+1

Seul le Var nommé par le symbole peut être lié à zéro. Le symbole lui-même nomme un Var dans l'espace de noms actuel, puis il peut être résolu ou non (alors la résolution renvoie un résultat nul). –

3

Jetez un coup d'œil à this page. Par exemple

(ns-map *ns*) 

vous donnera une carte des liaisons dans l'espace de noms actuel. Vous pouvez examiner cette carte pour décider si votre symbole est une clé dans la carte,

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

Je ne sais pas si cela est la manière canonique .

+0

'(? Contient (ns-carte * ns *) clé)' fait la même chose, probablement plus vite. –

+0

vrai, je vais modifier cela. Merci – Jonas

Questions connexes