gpt4 book ai didi

logging - 在 clojure 中获取调用者命名空间

转载 作者:行者123 更新时间:2023-12-04 23:12:52 26 4
gpt4 key购买 nike

我在 Clojure 中封装了一个日志库;让我们调用这个 foo.logger 的命名空间.现在我有另一个命名空间,如 bar.baz从那里我调用记录器。

是否有一些惯用/不错的方法,我可以确定记录器内调用者命名空间的命名空间?我不想将其设置为记录器的参数 ;-)

最佳答案

这是使用宏是一个可靠选择的罕见情况之一。

使其成为打印 *ns 值的宏将获得 *ns* 的值在调用者空间中,因为宏将在该命名空间中扩展和运行。

(defmacro log [msg]
`(printf "%s:%s\n" ~*ns* ~msg))

尝试注意围绕此的“宏观传染”,因为任何想要扩展此功能的东西也需要是一个宏,尽管我在过去的六年里一直在这样做,而且这并不经常出现问题。

关于logging - 在 clojure 中获取调用者命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51500459/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com