仕様によるとdef
、現在の ns (つまり *ns*) で var をインターンする必要があります。ただし、次のコードは似ていません。
(ns namespace-b)
(defn def_something []
(ns namespace-a)
(println *ns*) ;prints namespace-a as it should
(def something 1)
)
(def_something)
(println namespace-b/something) ; prints 1
(println namespace-a/something) ; throws
私は何が欠けていますか?
ノート:
defn
明確にするためにのみ使用されます。匿名関数の定義と実行も同様に機能します。def
内部関数を使用することは、おそらくあまり慣用的ではないことを私は知っています。ただし、これは私が遭遇したより大きな問題の本質を抽出したものです。