Я знаю, как использовать with-redefs
, чтобы заглушить переменные при тестировании, например. Мне было интересно, возможно ли сохранить переопределения эксклюзивно только для непосредственного тела кода, чтобы оно не влияло ни на какие впоследствии вызываемые функции. Например:
(defn foo [] (println "foo")
(with-redefs [println (constantly nil)]
(println "bar")
(foo))
Ничего не печатает, но если бы можно было сделать то, что я описываю, мы увидели бы только напечатанное foo , так как println
сохранит свое первоначальное значение ввызываемая функция foo
. Это вообще возможно?