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

欢迎!请查看 关于页面以获取更多有关此功能的信息。

0

我认为添加一个可以将标准输出重定向到 *err* 的宏会很有用。

(with-err-out [& body]
  `(binding [*out* *err*]
     ~@body))

1 个答案

+3

反对意见:`(with-err-out (do-stuff))` 既不比 `(binding [*out* *err*] (do-stuff))` 更短,也不更容易阅读。

我同意这个宏并没有做什么——例如 `with-out-str` 做的事情更多,但肯定有帮助,而且我认为它并不会使事情变得更复杂。
在我看来,名称膨胀会导致认知负荷增加,有时这也许是合理的,但在这种情况下我认为并不如此。甚至我认为 `if-not` 和 `when-not` 这样的功能并不真正必要。
啊,我刚才误以为你在谈论 `with-out-str`,不过这个函数至少在处理互操作性方面是合理的。除此之外,我认为它的使用频率比将标准输出重定向到标准错误要高得多。
我明白了这个观点,但我仍然认为在某些情况下,你可能需要它。当我想要做一些快速的调试时,写宏的名称比与绑定矢量绑定要容易得多,这样可以节省一些时间。

附言:我已经在slack上将这个问题发给了大家,我想和更多的人讨论一下,我认为这是一个大家可能会有不同看法的问题。
根据我的经验,通过将 *err* 绑定到 *out* 来捕获标准错误要比反过来绑定更常见,但有了绑定功能后,我从未觉得需要宏,所以我认为Eugene是对的,这其实并不需要。
我同意,这个宏需要我去查看源代码来理解发生了什么,而直接使用绑定表单则不会占用更多空间,而且对其功能一目了然。
同意。




顺便说一下:我不能发送少于 12 个字符的消息哈哈哈
...