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的观点,这并不是必需的。
by
我同意,这个宏需要我查看源代码来了解正在发生什么,而直接使用绑定表单则不需要更多的空间,并且对它所做的事情非常透明。
by
同意。




顺便说一句,我无法发送少于12个字符的消息,哈哈
...