请在 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个字符的消息哈哈哈
...