2024 年 Clojure 状态调查! 中分享您的想法。

欢迎!请参阅 关于 页面以获取更多关于如何使用本站点信息。

0
ClojureScript

目前,CLJS 中的 with-redefs 的文档字符串如下所示

cljs.core/with-redefs
([bindings & body])
Macro
  binding => var-symbol temp-value-expr

  Temporarily redefines vars while executing the body.  The
  temp-value-exprs will be evaluated and each resulting value will
  replace in parallel the root value of its var.  After the body is
  executed, the root values of all the vars will be set back to their
  old values. Useful for mocking out functions during testing.

这使得它看起来就像它可以用与 CLJ 中相同的方式使用相同的宏。
然而,David Nolen 的这个评论 指出不同的情况

如果您想在生产中使用 with-redefs 重新定义某些变量,您需要将这些变量标记为 ^:dynamic。

1 答案

0

一个侧记

在 JVM Clojure 中,^:redef 元数据就足够了。另请参阅关于直接链接的文档

https://clojure.org/reference/compilation#directlinking

...