如何在clojurescript程序中获取我所在的Clojurescript命名空间?我想这样做提供某些调试信息(它只需要在开发模式下工作)
命名空间在ClojureScript中不是第一类,因为它们在Clojure中.绝对没有办法在运行时获取命名空间.如果您不害怕访问某些ClojureScript编译器内部,则可以在宏展开时获取此信息.可能应该有一个API - 但我们还没有.
小智 9
您可以使用此技巧获取当前命名空间的名称,这可以利用::在当前命名空间中为您创建命名空间符号:
(namespace ::x)
Run Code Online (Sandbox Code Playgroud)
您可能不希望将该值用于任何事情,因为如果编译代码,则内部表示将更改.如果你想危险地生活,那么在浏览器中你可以访问包含命名空间的js对象,如下所示:
(reduce (fn [ns n] (aget ns n))
js/window
(clojure.string/split (namespace ::x) #"\."))
Run Code Online (Sandbox Code Playgroud)
在宏扩展期间,您可以像这样&env从:ns键访问和检索名称空间信息:
(:ns &env)
(:name (:ns &env))
Run Code Online (Sandbox Code Playgroud)
这仅在宏扩展/编译时有效,而在运行时无效。
| 归档时间: |
|
| 查看次数: |
1433 次 |
| 最近记录: |