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个字符的消息哦
...