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`。这个函数至少是合理的,因为它处理了互通性。除此之外,我认为它比将stderr重定向到stdout的使用频率要高得多。
我明白了,但仍然,我认为存在你可能需要它的情况。当我想要做一些快速调试时,写入宏名比绑定绑定向量要容易得多。这样可以节省一些时间。

补充说明:我已经在Slack上链接了这个问题,我想和更多的人稍微讨论一下,我认为这是每个人都有不同意见的事情。
在我的经验中,通过将*err*重定向到*out*来捕获stderr比反过来操作更常见,但随着绑定的可用性,我从未感到需要宏,所以我同意Eugene的观点,这并不是必需的。
我同意,这个宏让必须要查看源代码才能明白发生了什么,而直接使用绑定表单则不会占用更多空间,并且可以清楚地了解它所做的工作。
同意。




P.S.:我无法发送少于12个字符的消息(cartoon)
...