Section courante

A propos

Section administrative du site

Espaces de noms

Les espaces de noms associent des symboles simples (non qualifiés) à des variables (Vars) et/ou des classes. Les variables peuvent être internées dans un espace de noms, à l'aide de `def` ou de ses variantes. Dans ce cas, elles possèdent un symbole simple pour leur nom et une référence à leur espace de noms conteneur, et ce dernier associe ce symbole à la variable correspondante. Un espace de noms peut également contenir des associations entre des symboles et des variables internées dans d'autres espaces de noms, grâce à `refer` ou `use`, ou entre des symboles et des objets de classe, grâce à `import`. Notez que les espaces de noms sont des objets de première classe : ils peuvent être énumérés,... Les espaces de noms sont également dynamiques ; ils peuvent être créés, supprimés et modifiés à l'exécution, dans le REPL,...

La meilleure façon de définir un nouvel espace de noms en haut d'un fichier source Clojure est d'utiliser la macro `ns`. Par défaut, cela crée un nouvel espace de noms contenant les associations pour les noms de classes de `java.lang` et `clojure.lang.Compiler`, ainsi que pour les fonctions de `clojure.core`.

Dans le REPL, il est préférable d'utiliser `in-ns`, auquel cas le nouvel espace de noms ne contiendra que les correspondances pour les noms de classes de `java.lang`. Pour accéder aux noms de l'espace de noms `clojure.core`, vous devez exécuter `(clojure.core/refer 'clojure.core')`. L'espace de noms utilisateur du REPL a déjà effectué cette opération.

L'espace de noms courant, `*ns*`, ne peut et ne doit être défini qu'avec un appel à `in-ns` ou à la macro `ns`, créant toutes deux l'espace de noms s'il n'existe pas.

Fonctions associées

Catégorie Fonctions
Création et basculement vers un espace de noms : in-ns ns create-ns
Ajout à un espace de noms : alias def import intern refer
Déterminer les espaces de noms existants : all-ns find-ns
Examiner un espace de noms : ns-name ns-aliases ns-imports ns-interns ns-map ns-publics ns-refers
Récupération d'un espace de noms à partir d'un symbole : resolve ns-resolve namespace
Enlever des éléments : ns-unalias ns-unmap remove-ns

Plus d'informations

Voir aussi :



Dernière mise à jour : Lundi, le 2 février 2026