目前,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。