Clojurescript プログラム内から現在の Clojurescript 名前空間を取得するにはどうすればよいですか? これを行いたいのですが、特定のデバッグ情報を提供します (開発モードでのみ動作する必要があります)。
1878 次
4 に答える
13
名前空間は、Clojure のように ClojureScript のファースト クラスではありません。実行時に名前空間を取得する方法はまったくありません。ClojureScript コンパイラの内部にアクセスすることを恐れていなければ、マクロ展開時にこの情報を取得することができます。このための API があるはずですが、まだありません。
于 2013-05-21T12:46:59.580 に答える
12
このトリックを使用して、現在の名前空間の名前を取得できます。これは、現在の名前空間で名前空間付きの::
シンボルを作成することを利用します。
(namespace ::x)
コードがコンパイルされると内部表現が変更されるため、おそらくその値を何にも使用したくないでしょう。危険な生活をしたい場合は、ブラウザーで、次のように名前空間を保持する js オブジェクトにアクセスできます。
(reduce (fn [ns n] (aget ns n))
js/window
(clojure.string/split (namespace ::x) #"\."))
于 2013-10-08T01:20:26.953 に答える
1
これを試すことができます
(apply str (drop-last 2 (str `_)))
于 2016-04-14T19:14:24.603 に答える