如何在clojurescript程序中获取我所在的Clojurescript命名空间?我想这样做提供某些调试信息(它只需要在开发模式下工作)
答案 0 :(得分:9)
您可以使用此技巧获取当前命名空间的名称,这可以利用::
在当前命名空间中为您创建命名空间符号:
(namespace ::x)
您可能不希望将该值用于任何事情,因为如果编译代码,内部表示将会更改。如果你想危险地生活,那么在浏览器中你可以访问包含命名空间的js对象,如下所示:
(reduce (fn [ns n] (aget ns n))
js/window
(clojure.string/split (namespace ::x) #"\."))
答案 1 :(得分:7)
命名空间在ClojureScript中不是第一类,因为它们在Clojure中。绝对没有办法在运行时获取命名空间。如果您不害怕访问某些ClojureScript编译器内部,则可以在宏展开时获取此信息。可能应该有一个API - 但我们还没有。
答案 2 :(得分:5)
在宏扩展期间,您可以访问Html.ActionLink
并从&env
键检索命名空间信息,如下所示:
:ns
这仅适用于宏扩展/编译时,而不适用于运行时。
答案 3 :(得分:1)
你可以试试这个
(apply str (drop-last 2 (str `_)))