名前空間は、単純な(修飾されていない)シンボルをVarまたはクラスにマッピングするものです。Varは、defまたはそのバリアントを使用して名前空間にインターニングできます。その場合、名前には単純なシンボルが、参照には含まれる名前空間が割り当てられ、名前空間はそのシンボルを同じVarにマッピングします。referまたはuseを使用して、他の名前空間にインターニングされたVarへのシンボルからのマッピング、またはimportを使用してクラスオブジェクトへのシンボルからのマッピングを名前空間は含むこともできます。名前空間は第一級オブジェクトであることに注意してください。列挙などを行うことができます。名前空間は動的であり、REPLなどで実行時に作成、削除、変更できます。
Clojureソースファイルの先頭で新しい名前空間を設定する最良の方法は、nsマクロを使用することです。デフォルトでは、これはjava.langのクラス名とclojure.lang.Compiler
、およびclojure.core
の関数のマッピングを含む新しい名前空間を作成します。
REPLでは、in-nsを使用するのが最適です。この場合、新しい名前空間にはjava.langのクラス名のみのマッピングが含まれます。clojure.core
名前空間の名前へのアクセスには、(clojure.core/refer 'clojure.core)を実行する必要があります。REPLのuser
名前空間では既にこれを実行済みです。
名前空間の作成と切り替え:in-ns ns create-ns
名前空間への追加:alias def import intern refer
既存の名前空間の検索:all-ns find-ns
名前空間の検査:ns-name ns-aliases ns-imports ns-interns ns-map ns-publics ns-refers
シンボルから名前空間を取得:resolve ns-resolve namespace
要素の削除:ns-unalias ns-unmap remove-ns