Je veux vérifier si un symbole est résolvable dans l'espace de noms actuel. Quelle est la manière canonique de faire ceci?Comment vérifier si un symbole peut être résolu dans l'espace de noms actuel?
Répondre
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)
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 .
'(? Contient (ns-carte * ns *) clé)' fait la même chose, probablement plus vite. –
vrai, je vais modifier cela. Merci – Jonas
- 1. Symbole externe non résolu
- 2. Comment vérifier si un caractère Java est un symbole monétaire
- 3. symbole externe non résolu ... QueryInterface
- 4. Le scanner ne peut pas être résolu en un type
- 5. de type Java ne peut pas être résolu
- 6. symbole externe non résolu _CLSID_ScenicIntentUIFramework avec GUID
- 7. Jquery SI peut-être?
- 8. Comment vérifier que [out] params dans COM peut être utilisé?
- 9. Définir un symbole dans un autre espace de noms
- 10. Implémentation du symbole externe IUnknown, non résolu
- 11. erreur lien symbole externe non résolu
- 12. Plugin Eclipse: TextSelection ne peut pas être résolu
- 13. Visual C++ symbole externe non résolu (ne peut pas trouver une de mes propres fonctions)
- 14. Vérifier si un élément existe
- 15. "symbole externe non résolu" pour la fonction non référencée
- 16. Comment puis-je vérifier si RMI est connecté/peut être connecté?
- 17. Comment vérifier si un fichier existe dans un fichier makefile
- 18. Comment un conflit est résolu dans la liaison dynamique
- 19. Comment vérifier si l'utilisateur actuellement connecté utilise un profil itinérant?
- 20. Comment vérifier si un assemblage a changé
- 21. Déterminer si un fichier peut être déplacé ou copié
- 22. Comment savoir si une classe peut être sérialisée?
- 23. Comment vérifier si un NSPoint réside dans un NSRect
- 24. Comment détecter si une fenêtre peut être affichée?
- 25. Vérifiez si l'utilisateur actuel peut écrire dans le registre (C, windows)
- 26. Comment vérifier l'état actuel de la pile de threads
- 27. Comment vérifier si un pointeur est valide?
- 28. Comment vérifier si FileObject est un dossier?
- 29. Comment vérifier si une valeur est un entier dans MySQL?
- 30. Comment vérifier si une variable existe dans un modèle FreeMarker?
Comment faites-vous la différence entre un symbole non lié et un symbole lié à zéro? – Jonas
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). –