Tob*_*s S 4 logging namespaces clojure
我在Clojure中包装了一个日志库; 让我们调用它的命名空间foo.logger.现在我有另一个命名空间bar.baz,从那里我称之为记录器.
是否有一些惯用/好的方式,我可以确定记录器内的调用者命名空间的命名空间?我不想将此设置为记录器的参数;-)
这是使用宏是一个可靠选择的罕见情况之一.
使得打印值的宏*ns将获得*ns*调用者空间中的值,因为宏将扩展并在该命名空间中运行.
(defmacro log [msg]
`(printf "%s:%s\n" ~*ns* ~msg))
Run Code Online (Sandbox Code Playgroud)
试着要注意围绕这个的"宏观传染",因为任何想要扩展这个功能的东西都需要也是一个宏,尽管我在过去的六年里一直在做这个并且它经常不是问题.
| 归档时间: |
|
| 查看次数: |
222 次 |
| 最近记录: |